Guys, calm down. This is not an announcement. Actually what I’d like to share with you is what Exophase mentioned at the end of March 2015 about the possibility of 3DS emulation on the Pyra. At this stage, nobody is working on it, so there is no point in getting excited – this is simply a reflection of whether or not it’s even possible.
The reason why I am reposting this is that it was an interesting perspective from a recognized authority about emulators (Exophase wrote the high-performance Nintendo DS emulator, Drastic, for ARM architectures) and I believe it needs more visibility.
Exophase: From my discussions with Normmatt (who has been involved with a lot of 3DS reverse engineering and some emulation work) about 3DS emulation it seems like it could be a lot like PSP emulation.
They have similar generation processors, with a main CPU running game code in user land only and a secondary CPU running system/OS routines. Most of the hardware outside of the GPU is abstracted by the OS. Programs have limits in what sort of memory they can access. The GPU mostly maps reasonably to something like OGL ES 2+. For years the approach for PSP emulation has been a lot of HLE, largely because the lower level hardware isn’t really understood and a lot of it is hiding behind encryption. And a lot (most? all?) of what it’s HLEing is OS code that lives on the firmware instead of being packaged with the game, meaning that you just have to HLE the newest version, since they must retain compatibility in the real hardware. This is different from a scenario where libraries are packaged with the game and don’t have to be compatible with anything else, where HLEing it becomes a nightmare of keeping up with many versions (see past attempts at XBox emulation for this problem in action).
On the matter of Xbox emulation, in case you are wondering why there is still no good Xbox emulator out there, there is a good post on that matter on NGEmu.
Exophase: So far, the approach for 3DS emulation has been similar to the approach for PSP emulation. Normmatt and I have joked about an optimized 3DS emulator running faster than DraStic does, but that might not be that far outside the realm of possibility. Especially when considering demand of resolution enhancement which I’m currently working on for DraStic – since it uses a software renderer it’s going to be a lot more expensive.
This sort of hardware and this sort of emulation approach is very different from DS and efficient DS emulation, where games are written more to the metal, are often more dependent on proper timing, and the 3D hardware interacts with the 2D hardware in a way that makes it cumbersome to emulate with OGL ES. There Nitro library code is bundled with the game so there’s no compatibility guarantee, and maybe not that much interesting to HLE anyway.
If 3DS emulation really ends up being a lot like PSP emulation then there’s a good chance someone will tackle it like they have PPSSPP. It’s too early to tell with Citra if that potential is really there or not, time will tell. But I don’t think I really want to do an emulator that must rely heavily on HLE and emulates system events using host timers instead of emulating clock ticks. That’d entail very different development and debugging than anything I’m used to, so I’m probably not a great candidate for it. The only thing I’d really be any good at contributing is an optimized ARM11 recompiler.
Citra is being developed in the open, and is still in ongoing development. It cannot run most games yet while a few titles are supported, while they run very, very slowly at the moment. It’s a good proof of concept at this stage but it will definitely require a lot more time to become usable… if it ever does.
Now, if you expected Exophase to work on 3DS emulation, you may be disappointed by the following.
Exophase: I don’t think I’d be terribly comfortable releasing a 3DS emulator any time soon either. When DraStic came out on Android DS was already nearly 9 years old, and the last major game came out a year earlier. This game (Pokemon Black/White 2) was also the only DS one that ever showed up on top sales lists anymore. There was still a stream of shovelware coming out (there still is even now!) but I don’t think the emulator really did anything to divert their sales. I can tell because the save database has lagged by several months, causing these new games to not work, and we only very rarely got complaints for any of them. Very cheap DS flashcarts have been a mainstream thing for many years, and DSes themselves had gotten very cheap, so people who just wanted to pirate games who may have bought them otherwise would have mostly already been doing so. And had they not they’d be buying the games second hand for the most part.
With 3DS there’s still quite a lot of life left, major first party games are still topping sales charts regularly, and the hardware itself is still selling nearly as much as PS4 is. Flash carts are out but they’re kind of a compatibility minefield, with the better ones being pretty pricey. It feels like there’s a much greater temptation to pirate games that are in their most crucial selling period, to try them on an emulator (especially if it has graphical enhancement), then not bother buying it. Now I’m not saying anyone else would be in the wrong to release a 3DS emulator, that they’re accountable for the actions of users, or even any statement on the morality of piracy. It’s simply something that I don’t think I personally feel comfortable with at the time, even knowing that it could probably make a lot of money. It’s a vague, very subjective line, and filled with compromises (eg, it’s not fair for the people who do buy games with the intention of using them on emulators, play games they already owned, or evaluate them on emulators then buy them if they have any intention of really playing it), and kind of hard to delineate. I’m sure there are many people who think that DraStic was just as problematic or that I’m rationalizing it, and that too is their subjective prerogative; I’m sure there are also people who find 3DS emulation now no problem at all and they’re free to support it however they want.
This may all end up moot if it takes several years for 3DS emulation to really get anywhere anyway.
Even if emulation ended up being successful, there is still one aspect of the 3DS that you will not get through emulation: the 3D screen effect. This might be a gimmick most of the time, but this is something that will clearly separate what the hardware can do versus what you can reproduce in software – at least on the Pyra. On desktops, there may be solutions, such as using 3D glasses for stereoscopy.
Anyway. We are just entertaining possibilities at this stage. The Pyra is not even out yet, and there will be many other things to worry about before caring about a 3DS emulator.