Thank you everyone for your feedback and suggestions! I think I figured out what is causing the conflicts I am experiencing, for which I'll reference the following screenshot of the mame input configuration for sf2.zip:
My rebindings are attempting to "relocate" buttons, assigning buttons 1->2, 2->3, 3->6, etc... (as noted before). The end result is that only the RetroPad bindings changed, not the keyboard key bindings. The OR clause in the mame mappings thus maps one key/button to two events and that ends up breaking things!
Hotkey is set during initial controller configuration. You should be able to have a different one for every (type of) controller you use. Configure additional controllers through the EmulationStation start menu.
Edit: oh but I guess you want to do this only for NES, so the shoulder button still works when using the SNES controller for SNES games... maybe not so simple then. The docs do say that hardcoded configurations are "locked to a specific core and controller," but in the example they give, I don't see anything that does tie it to a specific controller.
@mitu Everything that is mapped to my controller works if Game Focus is turned off. Problem is now with 1.9.4. the keyboard doesn't work until Game Focus is turned on. Once Game Focus is on, I loose all the mappings, I can't even open the Retroarch menu. What was the need for the change. Before this version, I never saw this happen.
It doesn't effect any games that do not use a keyboard until you get to Amiga, A800, AtariST and DOSbox-pure.
I don't know a way around this without plugging in a true USB keyboard that has a scroll-lock key. My BT unit doesn't have one. I opened the retroarch.cfg and tried to remap the Game Focus key to another key, but it keeps automatically reverting back to scroll-lock as the entry.
I've deleted Retroarch and reloaded it by source thinking maybe some file is still hanging around from a previous build, but it didn't change anything.
I'm not sure what else to do with this other than buy a new, portable BT keyboard that has a scroll-lock key on it.
Update....nevermind... I found this on reddit and see there is a way to reassign the on/off toggle. I set mine to page-up key. All good.
Nice. I want to get a Sinden lightgun sometime. I guess I'm out of ideas since I haven't used one before. I thought I read on his site that you have to install some custom software or driver to make it work with the border around the screen.
Maybe someone else who has one might have some ideas. To me it sounds like there is some configuration specific to the way the lightgun detects whether it is pointed at the screen or not. On the original NES Zapper it would select game modes if pointed away from the screen and start one if it was pointed at the screen.
I assume the Arduino config (or any joypad input config) overrides the retroarch.cfg in some way?
Your configuration in retroarch.cfg - as it is right now - configures a keyboard.
input_player1_r = "w"
When configuring a gamepad, the syntax is different:
input_player1_r_btn = "12"
RetroArch will load - indeed - the configuration from the autoconfig sub-folder if it finds one. The gamepad's auto-configuration file was generated by EmulationStation when you configured the gamepad in the Input Configuration step.
I find it easier to open up the RetroArch's menu (via Hotkey + X) and use the Controls menu to change things, test them and then save it with a Core input configuration remap.
Apparently this is an issue with the SN30 Pro itself. I got it working. Here's what I did:
Deleted SN30 Pro from registered Bluetooth devices
Powered on SN30 Pro with Start+B (Android mode) and held Pair button (top of controller) for 3 secs to immediately go into pairing mode. While in pairing mode selected Register and Connect Bluetooth Devices in RetroPie-Setup Script >> Setup >> Configure Bluetooth Devices
Selected 8Bitdo SN 30 Pro from list and finished config
Did NOT set up udev rule
Now the controller is working perfectly; I'm able to open Launch Menu or go straight into games ... no sitting at black screen for ~40 secs. Also no waiting required to navigate script menus either.
I did have to reconfigure controller layout ... and the L/R triggers are actually recognized now as well.
@sad_muso I would add, that it's better imho to edit the global file manually or via the RetroPie menu -> configuration editor (which has some of the settings but allows manual editing also)
Reason being that saving out from retroarch saves every possible setting. All config file "comments" will be lost, and it's a lot of config entries. It won't be easy to know what you have changed if you ever need to check.
But of course you can choose the method you prefer.
Without seeing a log file - /dev/shm/runcommand.log - or the actual configuration file, it's difficult to say what is wrong. The default configuration file installed by RetroPie should always work (retroarch.cfg.rp-dist).