The hardest part is arguably going to be the GPU ...
Every last attempts that emulator devs did for previous consoles consisted of fixed function GPUs ...
The way the Citra emulator side-stepped this was to emulate the GPU using the CPU. You'd think it would be easy emulating what looks like an OpenGL ES 1.1 feature set GPU with some extensions but it can't even be done using modern GPUs that support the latest graphics APIs like Direct3D 12 or OpenGL 4.5!
CUDA is one possible option but even with the latest Nvidia GPU micro-architecture, it may not provide every functionality from AMD's previous GPU architectures ...