Monday, March 7, 2016

Three Steps Forward, Two Steps Back

So, the whole world wants to know... what makes me think I'm so funky?

No wait, that's not it. What the whole world wants to know is this... why the hell do we have to buy a New 3DS to play Super NES games that were released over twenty-five years ago? The answer is as sobering as it is surprising. Put bluntly, the 3DS as it was first designed in 2011 isn't very good hardware. Like, at all. Oh sure, everyone was dazzled by the near GameCube-quality visuals of its launch title Pilotwings Resort, but it's become increasingly obvious in the years since that the system wasn't designed for the long haul.

Yes, Abdul's stand looks like an
Atari 5200 character, but trust me, this
was hella impressive back in 1999.
(image from Moby Games)
You remember twenty years ago, when conventional wisdom was that the Playstation couldn't handle 2D graphics? It turned out that this reputation wasn't entirely deserved... the system was actually pretty 2D capable in the right hands, as late releases like JoJo's Bizarre Adventure and Street Fighter Alpha 3 proved. However, even the best hands could barely wring 2D gaming out of the 3DS, as this interview with emulation specialists M2 illustrates. Here's a quote from M2's president Naoki Horii:

The 3DS had a big change in architecture from the Nintendo DS and Game Boy Advance; it uses a GPU that specializes in stereoscopic 3D. When you bring software from an era when games were composed of sprites and backgrounds into an emulator on the 3DS, you wind up doing a lot of work in a very roundabout way. And that offsets the performance gains you get with the CPU. That’s why I said “they [Genesis games] probably won’t work out.”

We did eventually get Gunstar Heroes,
so I guess I can't complain TOO much.
(image from USGamer)
Of course, M2 did manage to get Genesis games running on the old 3DS, but it took a lot of work to make it happen... and it's worth mentioning that the Genesis has a relatively straightforward design, without the bells and whistles of the Super NES. That console is hard to properly emulate even on home computers, and on the 3DS, with its 2D handicap and lackluster specs (just two cores with one dedicated to the operating system, 128 megabytes with a large chunk of that devoted to the OS, and a clock speed of 268MHz), it's simply out of the question.*

Things are getting pretty nerdy all up ins, so let me put it to you in simpler terms. Emulating classic systems on the 3DS is like dicing tomatoes with a butter knife. It's possible in theory, but it's messy in practice, and it doesn't take long before you realize you've got the wrong tool for the job.

This leads me to the unfortunate conclusion that the original 3DS was never the right tool in the first place. It was incredibly shortsighted for Nintendo to develop a handheld which can't handle their library of classic games, especially when you stop to consider that Sony's last generation PSP can. The New 3DS has the muscle to emulate Super NES games and a whole lot more, but from where I'm standing, the system looks like a Band-Aid for a self-inflicted wound.

* Granted, there is an emulator called BlargSNES which kind of runs Super NES games on the old 3DS, but its compatibility is limited and even the games that do run don't run perfectly. Blarg, indeed.


  1. Interesting read as always, Jess. I honestly had no idea Nintendo had hamstrung the OG 3DS in this way. It's kind of ridiculous, isn't it--given the company's history of 2D brilliance? I guess the higher-ups thought the stereoscopic 3D was more important than any other aspect for this system...

    1. 3D was big back in 2011, and Nintendo was looking for a way to make the 3DS stand out from its predecessors. They accomplished that, but at what cost? Heck, these days, it seems like the Old 3DS doesn't even do 3D all that well, considering what Nintendo had to do to make Smash Bros. work with it.

      I asked about the 3DS's issues with emulation on the GBATemp forum, filled with experienced hackers and even a few programmers who've had hands on experience with the system. I'll post the link here, and print the response from GBATemp member Daxtsu:


      1. No dynarec from userland without CFW/ARM11 kernel access, so slower interpreters are the only option, for systems that could otherwise use dynarec

      2. The DS and GBA had GPUs well-suited for emulating old systems, because they supported tiled graphics in their 2D modes, so less work had to be done when emulating the GPUs of other tile-based systems

      3. The 3DS GPU, as far as I know, doesn't support those same tile-based modes anymore, so it becomes necessary to emulate the other systems' GPUs like you do on a PC: using a framebuffer and poking pixels (either one at a time if it's really accurate, or an entire scanline at once if it's something like snes9x), which is extremely slow in comparison, needing a lot of CPU power to compensate

      The old 3DS's CPU is pretty weak to begin with, so when you factor in all of the above, emulators just begin to overwhelm it quickly. As far as the PSP goes, I wouldn't be surprised if it could do more work per cycle than the 3DS's (leaving aside the fact that you can run dynarecs on the PSP from userland with no restrictions), but I have no numbers or stats on that.


    2. Daxtsu is going into a lot of meaty detail here, but I can tell you that "dynarec" is short for Dynamic Recompilation. Basically it lets a more advanced game system use shortcuts when processing data for an older machine. "Userland" (aka User Space) is the system's peripheral resources, which the user can access without possible harm to the system's "kernal" or core. The problem is, the kernal also lets programmers do more with the system. If they can't reach it, they're forced to make do with what's in the user space, and those resources can be limited.

      What I know about the New 3DS is that it doubles all available resources... there are four cores instead of two, twice the RAM for both programs and graphics, more inputs, etc. Some of that stuff is still only available in the kernal, but there's much more in the user space, giving programmers more room to do their magic.

    3. Woof! Well, you're definitely right that this is some technical info, Jess. That said, it sounds like #2 in your first response above has a lot to do w/ the OG 3DS' inability to emulate SNES and probably even GBA games. Also, the system's overall lack of power seems to play an important role. Anyway, ugh. At least the N3DS exists, though like you said, even that hardly seems to be the perfect solution here...