So right at the time emulators are good enough to enable piracy the impact is significantly less because you can't buy the original console and games anymore.
So right at the time emulators are good enough to enable piracy the impact is significantly less because you can't buy the original console and games anymore.
The Nintendo 64 was an exception since Ultra64 was released quite early and worked impressively well on PCs of that time (as long as you had a 3Dfx card).
Another oddity is the GBA - an emulator for the machine existed before it was even released (GBAemu - I believe it was capable of at least running Nintendo's tech demos), and BoycottAdvance was, IIRC, at least somewhat viable around the time of the US launch of the console.
You could write the entire opcode table for an ARMv7 chip and run ARMv3, ARMv4, etc code on it. Assuming there aren't any illegal instructions and that you've got the timing right, it should run just fine. So, essentially, you've got 1/3 the hard part done.
The GPU for the GBA was basically a chimera of the GB engine and the SNES's. Even had similar modes built into the BIOS. The Switch has a Maxwell based GPU. One very similar to that in the Tegra X1, which is very well documented (If you're willing to dig through their massive Technical Reference Manual (https://developer.nvidia.com/embedded/downloads) and the nouveau source.
That just leaves audio, the bus, game formats, etc to be "discovered" or reverse engineered.
I decided against pursuing GBA homebrew in particular, though, because Nintendo DS homebrew is slightly more fun while not being particularly higher-level than the GBA. You've still got sprites and backgrounds and scale/rot/shear effects; but now you've got two GPUs (where either GPU can address either screen), and a 3D layer sandwiched in amongst the background layers and sprite layers.
† Though, I mean, that's a matter of interpretation; all the modern 3DS and Wii U homebrew is still released/discussed/developed on the GBATemp forums, which—obviously—had its roots in the GBA homebrew scene.)
At least, this seems like a sane approach to me. It benefits from less of the existing reverse engineering work on NVidia chipsets, BUT it's higher level, which probably means it will be easier to understand and yield better performance in practice, especially since it is going to have to be implemented on top of higher level GPU APIs anyways.
I'm enjoying some of the Switch games, and might want to relive the experience one day, but for now an emulator cannot easily duplicate the portability of the Switch. I would still be happy to know there's a good emulator out there though.
https://en.wikipedia.org/wiki/Bleem! https://en.wikipedia.org/wiki/Connectix_Virtual_Game_Station
In college, I had a lot of fun bringing my laptop to class with my legal copy of FF Tactics in the drive so I could play it during boring lectures. It was the perfect game for that, since it was turn-based, so if I ever needed to stop playing and pay attention, I could.
I fondly remember Bleem, and played my real PS1 disks through ePSXe for years, because it turned my laptop into a portable Playstation. That was a neat trick. I still have my original PS1 and it's in good condition, but I'm glad I don't have to actually rely on the aging hardware to continue to enjoy my collection of games.
That generation of consoles seems to have been the only one where current consoles could be emulated on a low-spec PC with good compatibility. I'm not sure why. Perhaps that PC technology was still skyrocketing in the late '90s, outstripping current consoles so rapidly that emulators didn't need to be efficient, and the console devs hadn't yet made any major attempt at DRM.
Bugs and errata can be a concern (I think I remember some issues regarding PowerPC atomic instructions misbehaving on the Wii U for example) but I would expect them to be fairly minor compared to the whole work of REing a custom microkernel and its associated services.
That’s assuming that you reimplement/HLE parts of the operating system rather than running the whole system in the emulator, in which case you wouldn’t need to care much about how the OS works. I suppose you think HLE is nevertheless easier overall?