1. https://github.com/Ryujinx/Ryujinx/blob/master/Ryujinx.Graphics.Shader/Decoders
2. https://github.com/yuzu-emu/yuzu/tree/master/src/shader_recompiler- PS3 (Nvidia RSX): https://github.com/RPCS3/rpcs3/blob/master/rpcs3/Emu/RSX/rsx...
- PS4 (AMD GCN): https://github.com/AlexAltea/orbital-qemu/blob/master/hw/ps4...
The hardware is known ahead of time, so console platforms take advantage of that: GPU drivers allocate a context and hand it over to userspace which can do nearly anything it wants with it (abstraction layers are quite thin), and graphics APIs are essentially a 1:1 mapping of the hardware.
Because of that there's little difference between emulating the API or emulating the GPU (the subset of the GPU accessible through the API).
The only major difference I'd say is emulating the entire GPU (including VM, GART/IOMMU, display controller, multi-contexts, etc.) vs just emulating a single GPU context (which feels quite similar to implementing a graphics API).
As far as the requirement to own a Switch, it mostly has to do with being able to decrypt games to play them and system OS apps for services they provide to games. If they were to ship these keys or firmware blobs, they'd be at risk of litigation from Nintendo versus providing documentation on how to obtain the keys and firmware legally. Some of the firmware files might be able to be reimplemented in the future depending on patents and the like.
As a side note, the files required to play _can_ be found online, probably by searching the firmware version plus the filename from Yuzu/Ryujinx docs. (The keys are firmware version specific, and I think tools like RyuSAK let you get both keys and firmware, but this definitely isn't the legal way to go about it )
This has not been necessarily the case for years.
Where would you be running this where you’re also blocked by net support?