Jump to content
LaunchBox Community Forums

So I've been trying to configure the 8bitdo M30 controller for use in Sega Genesis games in RetroArch, and I just can't get it right...


Recommended Posts

I'm wondering if the problem is that I don't understand how the RetroPad configuration works. I currently use the SN30 Pro & the Pro + as my main controllers (buttons are the same, so switching between them is effortless). When I connect my M30 (the 6 button Sega Genesis style controller), the buttons are all out of whack, so I have to go into Settings --> Input --> Port 1 Binds & rebind the controller (for whatever reason, with the way I have my SN30 Pro configured, I can't get the Z & C buttons on the M30 to map properly on any of Genesis cores, although Blast'Em will map the 3 Genesis buttons properly, for some reason (although I want to start using RetroAchivements, now that some features are integrated into Launch Box, and Blast'em doesn't work with RetroAchivements).


So my impression was that each device had its own autoconfig that automatically changed when you changed controllers. When I remap the buttons, I make sure to click on "save autoconfig", since I had assumed that is what saves the device index for that controller. Am I misunderstanding how this works? I can only get one controller or the other to be configured properly, but not both.


I'd like to get RetroArch to swap automatically, but if RetroArch doesn't actually do that, can I save a config specifically for Genesis games, and then use a command line to load that config when launching it in Launch Box? I don't know what the command for that would be...

Link to comment
Share on other sites

Ok, a follow-up. I opened up RetroArch on its own without any core/game loaded (for some reason, when I try to save a config, it often fails when a core/game is loaded). I then set up my 8bitdo M30 contoller the way I wanted, and then saved a new configuration (Main Menu --> Configuration File, and then the "Save New Configuration"). Then I renamed it to RetroArchM30.cfg. I moved that file to the RetroArch root directory, and added the command line, "--config RetroArchM30.cfg" to the command line for Genesis GX Plus within Launch Box. 


I do wish I could get it working to where it would automatically switch the controller settings on the fly, but this works well enough for me, for now. I'm probably going to make a separate entry within the Emulators menu within Launch Box used just for my M30, that way I can use the same cores for either controller.

Link to comment
Share on other sites

  • 3 months later...
5 hours ago, FastFeet said:

Thank you PurleTentacle.  I spent all day trying to get my M30 working with no success. That is until you helped. I wish I could find a better way but this does the trick. Thanks again.




I actually found a better way. If you look in the \RetroArch\autoconfig directory, you'll notice other directories, the important ones being "dinput" and "xinput" (depending on if you have your controller set to dinput or xinput). In each of those directories, you'll find files named 8Bitdo_M30_BT.cfg & 8Bitdo_M30_USB.cfg. That's where it stores the key binds for the controller, so from there, it's a matter of matching up the button numbers with the buttons you want them to be.


This, for instance, is what I have set for 8Bitdo_M30_BT.cfg:



# 8BitDo M30 BT          - http://www.8bitdo.com/     - http://www.8bitdo.com/m30/
# Firmware v1.13         - http://support.8bitdo.com/

input_driver = "dinput"
input_device = "Bluetooth Wireless Controller   "
input_device_display_name = "8BitDo M30"

input_vendor_id = "11720"
input_product_id = "1617"

input_b_btn = "1"
input_y_btn = "0"
input_select_btn = "10"
input_start_btn = "11"
input_a_btn = "7"
input_x_btn = "4"
input_l_btn = "3"
input_r_btn = "6"
input_l2_btn = "8"
input_r2_btn = "9"
input_l3_btn = "2"
input_r3_btn = "14"

input_b_btn_label = "B"
input_y_btn_label = "A"
input_select_btn_label = "Minus"
input_start_btn_label = "Start"
input_a_btn_label = "C"
input_x_btn_label = "Y"
input_l_btn_label = "X"
input_r_btn_label = "Z"
input_l2_btn_label = "L"
input_r2_btn_label = "R"
input_l3_btn_label = "LS"
input_r3_btn_label = "RS"

input_up_axis = "-1"
input_down_axis = "+1"
input_left_axis = "-0"
input_right_axis = "+0"

input_up_axis_label = "Dpad Up"
input_down_axis_label = "Dpad Down"
input_left_axis_label = "Dpad Left"
input_right_axis_label = "Dpad Right"

input_enable_hotkey_btn = "2"

# -------------------------------------------------------------------------------------------------------------------------------------------------
# If RetroArch do NOT detect the controller when connected via Bluetooth and won't even recognize manual binding,
# fix it by adding this udev rule (the line below WITHOUT the # symbol at the beginning!) to "/etc/udev/rules.d/10-local.rules" and reboot.
# SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
# -------------------------------------------------------------------------------------------------------------------------------------------------


The tricky part is that the default keys in RetroArch need to be set to "auto", or else it won't use those. Unfortunately, I can't remember how to set it to "Auto". It was something like going into the RetroArch Input menu, and then "Save autoconfig", and then you have to save the default configuration file under the "Configuration File" menu. (the retroarch.cfg file). Lemme know if that works, if you try it out.

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...