I switched to using RetroArch for emulation because the initial premise is a really good idea. A single program that loads "cores" to emulate different consoles instead of using multiple emulator programs. However it has some serious issues and the biggest issue for me is the way it handles controllers. If RetroArch recognises what controller you're using it's great. Plug the controller into a USB port and it just works. If it doesn't, manually configuring a controller is unnecessarily difficult. The settings are buried in the UI and even if you do manually configure a controller, it doesn't always work the next time you want to use it.
Some random thoughts on controllers.
Retro-bit USB SNES controller
Nice quality controller at a fair price. I use this when emulating the NES, SNES, GB, GBC and GBA. I didn't own a NES or a SNES back in the day so can't compare it to the original controllers.
Retro-bit USB MD and Saturn controllers.
Again, it's a nice quality controller for not a lot of money. I did own a MegaDrive and Saturn when I was growing up and these controllers are a faithful reproductions, the MD controller even rattles like the original. I use it for emulating 32X, MD, MCD, SMS, GG and Saturn. If you want just one controller for emulating 8-bit and 16-bit consoles, this is the controller I would recommend. It has enough buttons for almost any console from that era.
Retro-bit Tribute 64
This wasn't my first choice, I would have preferred a Brawler 64. In use it's been ok. The button layout works for the N64, it also makes for a decent controller for the Dreamcast and can work as a 3D Saturn pad. The position of the d-pad is odd but I haven't had any issues with it yet. The quality is ok for the price, it's about on par with the original.
Hori USB GCN controller
I really really like this controller. I did own a Gamecube and the Hori remake feels better than the original. The difference is especially noticeable in the trigger buttons and the d-pad.