The DS "GPU" is indeed very bizarre and shares more in common with the GBA 2D rasterizer than a modern 3D GPU architecture. That it's a scanline renderer that can handle quads directly should be a pretty big tell :)<p>I implemented a cheap subset of it used in Super Mario 64 DS for my online model viewer ( <a href="https://noclip.website/#sm64ds/44;-517.89,899.85,1300.08,0.37,-0.34,0.86,0.93,0.14,-0.34" rel="nofollow">https://noclip.website/#sm64ds/44;-517.89,899.85,1300.08,0.3...</a> ), but implementing all of the quirks and the weird featuresets might be nearly impossible to do in a modern graphics API. 2D rasterizers don't have to be slow (as SwiftShader and ryg show), and you can get the bizarre conditions exactly correct. I'm not sure what a GPU-based implementation would even add.<p>EDIT: The math to be able to handle the bilinear quad interpolation on a GPU was worked out by reedbeta last year: <a href="http://reedbeta.com/blog/quadrilateral-interpolation-part-2/" rel="nofollow">http://reedbeta.com/blog/quadrilateral-interpolation-part-2/</a> . That's a big roadblock gone, but there's still a lot of other questionable things.