I recently published an article about using a Nintendo Switch Online SNES controller to play Pokémon Red using the Gambatte emulator. While I opined that this official replica of a Super Nintendo controller is a great choice for playing classic Game Boy Pokémon on a computer, I noted that it may not be the best choice:
In truth, the Nintendo Switch Online NES controllers may be best of all for Pokémon. They are less ergonomic than the dogbone-shaped SNES controller, but they also lack extra buttons that go unused on the Game Boy. However, those are only sold in packs of two for $60, so I went with the better and more broadly-useful SNES controller. I have a rarer dogbone-shaped NES controller for the top-loader NES, but since that is an actual NES controller, I would need an adapter to use it with my computer. (Perhaps that will be a future project.)
(Did someone say future project? How about near future project?)
I present my top-loader NES controller.
I received a top-loader NES from a used video game store in or around 2000. I probably only ran it a couple of times and do not even have all the cords for it at the moment. But running the original top-loader NES itself is not our goal. I want to use the NES controller to play Pokémon Red on my Linux computer. Of course, I alluded to the challenge in my previous article. The Nintendo Switch Online SNES controller has a USB-C port. The NES 2 controller has a cable with an NES controller port.
You will not be surprised to learn that neither my workstation nor the mini PC I am using to play Pokémon Red have an NES controller port.
The Nintendo Switch Online article inspired me to look into adapters. My first choice was to check a site called Raphnet which produces and sells open source USB adapters for many classic controllers. Unfortunately, it did not have any NES-USB adapters in stock. I then turned to Amazon – where I previously purchased a USB adapter for my Wii Classic controllers (perhaps that will be another article topic). I looked through the NES options and purchased a Mayflash adapter that is supposed to handle both NES and SNES controllers.
See the back.
The Mayflash adapter has an SNES port and what appears to be a Sega Genesis-style port. However, many disappointed reviewers on Amazon have noted that it does not work with Genesis controllers (to be fair, it is not advertised as such – at least when I looked). However, it comes with an additional which plugs into the Genesis-style port and has an NES port at the end.
I decided to test this on my workstation before trying it on the mini PC. It is not a compatibility question – both my workstation and mini PC run the Arch-based EndeavourOS Linux distribution – but merely for convenience; I already had my workstation on. See everything plugged in.
My next step was to start up RetroArch, a terrific free and open source hub for managing retro game emulators and controllers. I know that RetroArch will note on start up whether a controller is plugged in. Let us see if it finds mine.
(Tip: When using the adapter with an NES controller, you need to make sure to really push the NES port into the NES adapter. From the perspective of the computer, the adapter itself is the controller, so the computer (at least RetroArch) will recognize that a “controller” is plugged in even if the adapter is not connected to anything. Thus, this can create a confusing issue/misunderstanding if the controller you are using, whether it is NES or SNES, is not properly attached to the adapter block.)
Very nice. That “HuiJia” is part of what I see with my Wii Classic controller adapter. NES/FC/SFC Joypad to USB BOX does seem to correspond to my adapter (FC stands for Famicom and SFC for Super Famicom – which are the Japanese versions of the NES and SNES respectively). Of course, just because the controller is recognized does not mean that it is configured, much less that it can be configured. I recalled when I had to re-map the buttons on my Wii Classic controllers with the adapter for those because they were wonky by default. The same appeared to be the case with my NES adapter – the directional pad and A/B buttons did not seem to work. Start made me jump in the RetroArch menu, so that was something I suppose.
Time to map the buttons.
Mapping the buttons worked without any problems. The NES controller has very few buttons – just the four directional pad inputs, A, B, Start, and Select. You can see how those buttons look when mapped in the above screenshot. (NOTE: You can copy my config for the adapter with an NES controller from my Gitea repository. Note that this is only a configuration for NES, you will likely need to add extra button mappings to make full use of an SNES controller. Unfortunately, I do not have an original SNES controller on hand at the moment.) After mapping the buttons, I could use my NES 2 controller to navigate the RetroArch menu, all but confirming that the set-up was successful. Next step was to try a game. I decided to go with Kirby’s Dreamland (ROM taken from my original 1995 copy):
The controller worked exactly as expected. You will have to take my word for it, however.
But while this controller will be great for all Game Boy games, I touted it specifically as a great fit for Pokémon Red. I went through the same steps to configure it with my mini PC and it again worked exactly as expected in RetroArch. (One interesting difference in setting it up on my mini PC instead of my workstation – the D-pad worked without any configuration when I first launched RetroArch but the buttons did not.) Of course, I was using Lutris with the Libretro core to play Pokémon Red instead of RetroArch proper, so I had to undertake a couple of additional steps to have my properly configured controller recognized when launching Pokémon Red from Lutris. See my companion article for information.
I have used it for a few Pokémon Red sessions and have not experienced any problems thus far. As I expected – I prefer the NES controller to the SNES controller for Game Boy and Game Boy Color games because it has the exact same buttons as a classic Game Boy, without the extra shoulder and X/Y buttons on the SNES controller. The one caveat to my preference is that the boxy NES controller is less ergonomic than the dogbone-shaped SNES controller, but my rarer model 2 NES controller solves the ergonomics issue. It is also a little bit smaller than the SNES controller (for better or worse), as you can see below:
There are many imitation NES controllers out there, but if you have the real deal laying around and are somewhat less than inclined to spend $60 on the official Nintendo Switch Online replicas, adapters are a little bit cheaper (I spent about $18 on mine). I will venture that the Nintendo Switch Online replicas are the best options for Linux users who are using Linux 6.8 or higher (6.8 and up as kernel support for Switch controllers), but there is a charm (or in my case, cost savings) to using the real originals.
(Notes: The Mayflash adapter also has Turbo functionality but I have not tested that – so to the extent you may be interested in trying it based on my very early positive impressions, I submit for the record that I have no insight on that particular feature. All of my computers run Linux, so I have not tried the adapter with Windows or MacOS – I suspect the vast majority of positive and mixed Amazon reviews were from Windows-users. Moreover, I have not yet tested it with an SNES controller but the Amazon reviewers seem to suggest that it works as advertised for that purpose.)