After Yuzu got shut down I’m not sure what this leaves people with for switch emulators. I’m going to try and find archives and will update the post when I do.
Last windows build: archive.org
Slightly older, but has linux and mac builds archive.org
Okay there we go, a github mirror: https://git.naxdy.org/Mirror/Ryujinx
Eh, it isn’t black magic. It’s just very labor intensive to nail down the broadest degree of compatibility possible. Requires tons of testing, and eternal vigilance against regressions (i.e. fixing one game breaks another). The fundamental concepts are well documented, and often times already available in generic implementations (CPU emulators / JIT recompilers / OpenGL / Vulkan implementations / compatibility layers, input libraries, etc). A project like WINE (famously not an emulator) is a lot more complex than a virtual machine which just runs the official binary system firmware.
Not to say it is easy, but it is an interesting subject with tons of literature and free software implementations to study. It has a lot of moving parts, but part of doing effective software development is understanding you don’t need to roll your own JIT recompiler when llvm and gcc-jit exist. Most contributors will specialize more or less in one thing (cpu architecture / graphics / audio / networking / debugging / reverse engineering / etc).
Implementing a CHIP-8 is a good way to get into emulation:
Yeah. It’s not easy, but if you’re a competent assembly programmer it’s all fairly straightforward at the theory level.