It works great for NES/SNES emulation, and even N64 emulation with an appropriate video plugin.
Snes9x is written in C++, IIRC. As is MESS' snes emulator.
The really frustrating thing was that the bugs wouldn't show up until about halfway through the game, usually when some nonstandard transparency effect was applied. Right at the point when you'd really invested in the game, very annoying.
The other common one was timing problems (ultimately, they're all timing bugs.) Starfox for example used to run something like 20% faster than on hardware. It looked fine, and if you grew up with the PAL version you might assume that the speed increase was just down to version differences, but the game was unplayable.
Make that 200%. I own the original and it's indeed unplayable on zsnes.
Zsnes is a horrible SNES emulator all around. It was decent when it came out 15 years ago, but it mis-emulates so many things it's just not worth bothering with it anymore. Square games (Final Fantasy, Chrono Trigger, Rudra no Hihou) all have wrong sound effects; anything with SuperFX is totally broken; Tri-Star games crash and lock-up randomly (Tales of Phantasia, Star Ocean). And the list goes on and on.
It's sad, because zsnes really has the best UI of the lot, but in 2016 there is simply no reason to use it. Use either bsnes/higan (for 100% accurate emulation) or snes9x (if you want to run it on an underpowered tablet.)
I have the pi B and I can do SNES pretty decently with a little overclocking. I understand the Pi 2 can do SNES with ease, and N64 pretty well too. I can only imagine the Pi 3 will do N64 smoothly and more.
Then I just tell VMWare Workstation that the arcade joystick USB should go directly to the arcade VM, and drag the VM window over to the arcade screen. This means I can use my computer directly as normal (I code in a linux VM on it), while the arcade is running independently. It works really well and lets me use a spare 4ghz core to run Hyperspin+MAME faster than my old arcade PC ever did.
Otherwise, it's gotten so they are pretty decent now. When the Links first came out, they were quite laggy and unstable, but after a hundred or so patches, it's settled down.
I'm also going to use an HDMI switcher so that I can connect it to a faster machine like my laptop as an option.
Dos games are hit or miss, and it does horribly for N64.
Use an optimized video plugin, such as (shameless plug): https://github.com/tachiweasel/mupen64plus-video-videocore
I tried the retropie about a year ago on my Pi2 and there were no issues at all. Sega Genesis/Megadrive worked well too.
So when the arcade computer failed, I tried a different route. I realized my main desktop computer (a Core i7-4790k) is plenty powerful to do some arcade gaming on the side. A long VGA/USB/audio cable later, and my arcade is now running directly off a VM from my desktop. This works so much better than dealing with moving games on/off a SD card, and managing more physical things. It's easy to manage the VM, snapshot it, and change the config without even touching the arcade now.
With VT-d, PCI-passthrough, and the ridiculous amount of CPU cores everything comes with that this should be a more normal thing in the future. It'd be lovely to use those new multi-Gbit wireless standards instead of a cable though...