SNES Cores - so numerous, similar and confusing names

So previously I was using Snes9x 2010 core. Then awhile ago that core got switched to be named Snes9x Next, for unknown reasons. A few days ago when I updated cores, Snes9x Next is gone and Snes9x 2010 is back!? Extremely confusing. And it requires updating our per-core configs repeatedly. Why does the cores name keep switching?

On the same note, I’m just completely overwhelmed and confused by the naming and amount of SNES emulators now in Retroarch. Let me list what is currently in the core updater:

  • Beetle BSNES (I’ve never heard of this before, is it a new fork?)
  • BSNES Accuracy
  • BSNES Balanced
  • BSNES C++98
  • BSNES Performance
  • BSNES Mercury Accuracy
  • BSNES Mercury Balanced
  • BSNES Mercury Performance
  • Snes9x 2005
  • Snes9x 2010
  • Snes9x (yes, that is all it says! Is it newer, older, faster, slower than the other Snes9x cores? Your guess is as good as mine. I even checked github and couldn’t really tell)

I can’t even begin to fathom how to choose a BSNES core so I avoid that whole issue by not using any of them.

Is there a practical reason to have this many similar SNES cores? Is there a relatively recent FAQ on how they all differ? It just seems baffling to a veteran of emulation (began with Genecyst and Nesticle back in the 90s), so can imagine newbies just choose one randomly and hope for the best. Probably they all choose Snes 2010 since it has the most recent date.


Just pick one that works and forget the others exist.

To offer a small amount of clarity, the 3 types of bsnes builds are self-explanatory (accuracy, balanced, performance), and the mercury fork “aims to restore some useful features that have been removed, as well as improving performance a bit.” (more info here).

I believe the dated Snes9x cores are designed to improve performance at the cost of accuracy.

If you have ample power, I would just pick bsnes balanced or bsnes mercury balanced. I also doubt those names will change, so your core configs are safe :grinning:

Dunno what happened with your snes9x-next/2010 core, but we changed the name quite some time ago and never switched back. Something must have happened on your end.

Beetle bsnes is a fork of mednafen-snes, which is itself a super-old fork of bsnes (~v060). It’s just there as a side effect of porting/forking mednafen for its other cores. I would prefer to offer their new “faust” core instead, since it’s at least its own new thing but it also is semi-broken because it’s new and undeveloped.

3x bsnes is self-explanatory. The mercury cores are almost identical except we added back in the option to use special chip HLE (because, for example, Mega Man X2/3 requires an overclocked i7 to reach full speed with cx4 LLE) and made some small speed optimizations at the expense of code readability (it results in ~10% speedup, IIRC). We would drop the mainline bsnes cores in favor of the very similar “mercury” cores except a vocal segment of bsnes users are either under the erroneous impression that the mercury changes make it less accurate at default settings (you have to explicitly enable 2 core options to switch to the less accurate special chip HLE).

bsnes c++98 is a special fork from around v085 that’s been backported to work with older compilers. Many platforms we support are stuck with super-old compilers that don’t support the whiz-bang latest c++ features that byuu likes to use in bsnes mainline. I agree that this one doesn’t need to be in the online updater but it is, so whatever.

Snes9x with no date is the up-to-date mainline core that has upstream integration (i.e., the “official” snes9x). The date-stamped forks are snapshots from the year their code is based on. Snes9x has gotten slower over time as its accuracy has improved, such that many of the weaker platforms we support can’t run mainline at full speed, so we have older forks that provide more favorable performance thresholds at the cost of accuracy. The various MAME and FBA cores follow the same convention.

SNES is the most popular console we support, and it’s my favorite console, as well, so we want to make sure people everywhere have the options they want/need. We support too many platforms, including underpowered jailbroken consoles, outdated PCs and crappy phones, for a one-size-fits-all solution to cover everyone.


Hey thanks for the detailed reply hunterk! I absolutely agree that having choices is ok, especially when they offer differing performance so they can run well across a range of systems.

That said, I really think that the information that you just posted should be available somewhere for new users though. Ideally it would be awesome to have some way to access basic information about cores right from the Retroarch GUI, so you don’t need to go on the forum or Github to just get a straightforward explanation of what is the strength/weakness of any given core.


Which one of the cores has the HD mode 7 option on Android?

plain ol’ bsnes (i.e., non-mercury, no year after it). It’s very demanding there, though. I can only get ~45 fps at 2x on my Nvidia Shield ATV.