Introduction: Nintendo Switch Homebrew Guide - How to Configure "Split Joy-Con" Settings in RetroArch for Switch
As of this guide's publication, it's been about three and a half years since the Nintendo Switch was first released. The novel hybrid design of the system has drawn many players to the system, from those old enough to remember when playing console games on the go meant playing altered ports to kids who's first gaming experiences will be with the Switch. In the span of time since the Switch's launch, early launch revisions of the system have been made to be modifiable, allowing for homebrew firmwares and applications to be run on the system, ranging from high quality emulators not yet made available by official software developers to ports of Android and Ubuntu, and so much more.
One of my initial thoughts when seeing the Switch's reveal was how cool it'd be to have on-the-fly SNES multiplayer sessions. During the time I spent reading up on homebrew emulators available for the system, I found that there weren't too many standalone emulators like I wished, so my only option to get the emulation experiences I wanted to was to dig into RetroArch, the popular emulator frontend. I wasn't too excited about this, because of it's strong learning curve to use, but I went ahead and started to look into what it's capable of.
The Switch version of RetroArch is notable in that it boasts a controller option for splitting the Joy-Cons, which allows sets of Joy-Cons to be split into separate controllers. Initially, it seems like it doesn't work because the second player's controllers don't seem to just match the first player's controls. On top of that, there's bugs that can cause RetroArch to freeze, and trying to streamline the process of going from single player to multiplayer can be a headache. However, with an understanding of how to edit and personalize RetroArch's settings and configurations, being able to have instant multiplayer sessions becomes a cinch.
The purpose of this guide is to help RetroArch Switch users not only configure their split Joy-Con settings, but to understand how to customize the settings in RetroArch. This guide is made under the assumption that your Nintendo Switch already has the Atmosphere custom firmware installed onto it, along with the latest release of RetroArch (currently 1.9.0 as of this guide's publication). While I have spent plenty of time teaching myself how to use RetroArch, I can't claim I'm an expert on it because of how I haven't spent much time practically using it, in that I haven't spent much time actually playing games on it outside of testing different settings and configurations. Some of the info in this guide might be incorrect, and if that's the case feel free to let me know what needs correcting in the comments. This guide is very much by a noob, for noobs.
Without further ado, let's start setting up the ultimate party system!
Step 1: Step 1: Understanding How Configuration Editing Works in RetroArch
The biggest obstacle for me trying to get the split Joy-Con function to work properly is that I didn't understand how RetroArch handled its configuration editing. From what I understand, RetroArch runs on two levels of settings- the main RetroArch settings, and the core (otherwise known as the emulator) settings. Think of RetroArch and the core as being two separate programs.
The main RetroArch settings can be found in the aptly named "Settings" tab on the right side of the main menu. This tab covers all of the settings that RetroArch uses, which are applied to the core that's being used. It's generally concise about what each setting does and may even state if users should edit those settings or not, so it's very easy to understand what each option does. The RetroArch settings are saved by going to the Main Menu tab, then the Configuration File tab, and selecting "Save Current Configuration". This allows the settings edited for RetroArch to be applied on a global scale, meaning that no matter what core you have loaded, those settings will remain consistently applied.
The core settings work independently from RetroArch's settings. These options can be accessed under the Quick Menu tab that becomes present when a game is loaded from a core. These allow users to edit the settings specific to that particular core, so they don't get applied on the same global scale as changing the main settings. Saving the core settings also takes into account the settings that RetroArch is using, allowing the settings from both programs to be applied to just the core. Saving these settings can be done by going to the Overrides tab, found towards the bottom of the Quick Menu. Settings can be saved so they load for every game loaded by the core, for every game loaded from that one directory (otherwise known as a folder) with that core, or for just that individual game with that core. By editing the settings in the Quick Menu, we'll be able to properly configure the split Joy-Con controls.
To summarize- settings edited in the main RetroArch settings menu will apply to every core used, but settings edited in the core's Quick Menu will only apply to that core. Core settings can be applied to work throughout the whole core, just the game folder, or the the game itself. In case that was a lot to take in, I made an image that sums up to what degree the settings apply.
Step 2: Step 2: Configuring Split Joy-Con Controls
The meat and potatoes of this guide- the very reason why you're bothering to slog through my Great Walls of Text. This part will show you how to set up custom Joy-Con controls for smooth gaming experiences. For this section, I'll be using the FCEUmm core with a copy of the Super Mario Bros. Multiplayer ROM hack, which can be found here if you're interested in trying it out. I recommend getting cozy before digging into this- configuring all of your settings will take awhile.
First and foremost, let's check our RetroArch input settings by going Settings, then Input. Start by scrolling down to the option marked "Remap Controls for This Core" and turning it on. This will automatically load your custom controller configurations (known as "controller remappings") each time the core is loaded. This is important, because RetroArch on the Switch will freeze if we try to manually load a controller remap file, so the only way to have split Joy-Con controls work properly is to have it load custom remap files once the core boots up.
Scroll down and click to the Hotkeys tab, open it, then go over your Menu Toggle Gamepad Combo options. This option allows users to select a button combination to allow them to return to RetroArch's menus during gameplay, in case you want to edit some settings, pick a new game, or whatever else you may want to do. For this example, I have L and R chosen as my button combination, because the NES didn't use shoulder buttons, so the extra shoulder buttons can be used for these extra functions. I also chose them because the SL/SR buttons in single Joy-Con mode function as L and R, so I still have easy access to RetroArch's menu. It's up to you if you want to add other hotkeys (like the rewind function, for example), but I would wait until you have the rest of your controls figured out so you know what buttons are excess and can be used for these extra features. Bear in mind that ZL and ZR don't register in single Joy-Con mode, so I don't recommend assigning anything to those buttons for split Joy-Con mode. Just pick the option that works best for you, and move onto the next step.
Next, let's back out of the Hotkeys tab and scroll down to Split Joy-Con 1. Assuming this is being done on a standard Switch (and not the Lite model, not that those can be softmodded to run RetroArch at this time anyway), this option allows the Joy-Cons to instantly become separate controllers the moment they're removed from the system. Because I primarily play games in docked mode while using separate Joy-Cons, I just leave this option off until I want to play a multiplayer game with someone else. This option can be left on if you want, which might be nice if you primarily play with a Pro Controller or in handheld mode. I haven't been able to test this hypothesis of mine yet, but I believe the other Split Joy-Con options correlate to the other Joy-Con pairs connected to the system, so if a set of Joy-Cons registers as player two, that set can be split to become players three and four. Regardless, it's up to you if you want to leave it on or off.
Back out of the Inputs menu, and scroll down to User Interface. Open that up and turn on "Show Advanced Settings". This will make editing certain options easier.
Optional step: Scroll up to Saving. Open that up and scroll all the way to the bottom. I like to keep my save files alongside my ROM files, because I'm constantly backing up my ROM libraries and using them on my other homebrewed systems. If you want, you can turn on the "Write Saves to Content Directory" option, then save that to the main configuration under the Configuration File option under the Main Menu. Doing so will have RetroArch store your save files in the same folders and your ROMs.
Back out of the Settings Menu, go to the Main Menu and load a multiplayer game of your choice. Open the Quick Menu, and then scroll down to the Controls tab.Finally, you're probably thinking to yourself. Scroll down and click on your Port 1 controls. It's time to edit your split control schemes by making a controller remap. It might help to go back and turn on the Split Joy-Con option, so you can test the controls with your game of choice. For a good, intuitive control scheme, you have to think about what buttons you have to work with and how comfortable it is to use. For this example, I have my controls configured so that X and Y (otherwise known as buttons 3 and 2, respectively) function as extra start and select buttons for my split Joy-Con mode. That way, my regular A and B buttons function as normal, and I can still use plus and minus and start and select while I'm playing in handheld mode. Once you're happy with your configuration, apply the same changes to the other port control menus, then save your controller remap by either selecting "Save Core Remap File" (if you want the changes to be applied throughout the whole core) or "Save Content Directory Remap File" (if you want the changes to just affect games loaded from same folder as your loaded game).
One note I'd like to add is that your RetroArch hotkeys will still work even if you set the hotkey button for a different function in your controller remap. For example, I had my menu toggle button set to holding select (what RetroArch calls "minus", or "button 11" in my Inputs menu), but at one point mapped the start button to minus in my remap. Despite remapping my "select" button to a "start" button, I could still access the menu by holding what RetroArch understood as "select".
Back out of the Controls tab and go down to Overrides. Double check to make sure your Split Joy-Con option is off, located back in Settings -> Inputs, if so wish to use regular Joy-Con controls for single player games. Then go back to the Overrides tab. This is where we'll save our core settings and be done with controller configurations for this core! I would recommend selecting "Save Core Overrides" to maintain consistency throughout that core, unless the core in question is being used for multiple directories. In that case, select "Save Content Directory Overrides".
Ta-da! Now to use what you learned to edit all the other cores you use! You now have Split Joy-Con controls configured for that core!
Step 3: Step 3: Notes for Configuring Split Joy-Cons for N64 Titles
By going back and forth, saving core and directory overrides for each core, you were able to make an ideal RetroArch system for multiplayer sessions. You implemented clever and intuitive controls for each core without sacrificing your regular Joy-Con input settings like a mad puzzle solver. But you've got your eyes set to making custom remappings for select N64 games. You're sure you can pull it off, so you can have those sweet, sweet Super Mario 64 Splitscreen Multiplayer sessions. I thought I could too, but I realized there was a major hitch to this endeavor.
When making remappings in RetroArch 1.9.0 for the Switch, you need to have your remaps auto-load to prevent freezing. Your remaps also affect your regular non-split Joy-Con controls, so you'll be without all of your buttons on a per-game basis (assuming you're assigning your N64 games to a per-game basis). Unfortunately, this means that certain buttons won't be usable in Split Joy-Con mode, depending on the game. In my case, I wanted to set up Mario Kart 64 so that it could be played in Split Joy-Con mode, just like Mario Kart 8 Deluxe. I realized that the ideal configuration for me would mean eliminating C-Button use so that my right joystick would be used as a control stick. While a C-Button Mode could be assigned to a button (and not that Mario Kart 64 uses the C Buttons for anything affecting gameplay anyway), I didn't want my regular controls miss out on certain buttons, so I decided against making remaps for Mario Kart 64.
Your mileage may vary regarding this, but I felt it was something worth pointing out. You'll need to consider what buttons are considered unnecessary to remap on a per-game basis. For Mario Kart it's not so bad, but I do wonder how Splitscreen Mario 64 controls would work...
Step 4: Final Thoughts
This was a real brain-bender to figure out. I'm an old pro at Professor Layton puzzles, but finding new obstacles to work around and going back and forth between settings and games and trying to make intuitive control schemes was a mental chore. I'm happy to finally have made this guide so others can enjoy the awesomeness of Uniracers sessions on the go. Hopefully this was easy enough for others to understand- a lot of this homebrewery stuff is a great exercise in mental gymnastics, but without prior knowledge to the terminology or mechanics it becomes less gymnastics and more of an information overload.
I pounded this guide out in one sitting, for almost four hours for you Internet randos. Have fun!