If only the 3DS supported programmable fragment shaders. It would have helped a lot with emulating the graphical systems of platforms like the DS, SNES, etc. For instance, the 3DS lacks proper paletted texture support (it can be done, but at a cost of processing and certain features by doing it an oddball way with bumpmapping), so you'd have to go out of your way, using the CPU, to convert the various textures to a format that's understandable by the GPU.
- GPU_L8 + GPU_A8 on the same texture area to handle the 2-bit, 4-bit, and 8-bit formats (all have to be converted to 8-bit, and use alpha-testing to crop out the indices meant to be transparent)
- GPU_RGB5551 can handle the Direct color format (15-bit color, 1-bit alpha)
- GPU_LA8 can handle the A3I5 and A5I3 formats (Alpha 3-bit + Indexed 5-bit and Alpha 5-bit + Indexed 3-bit, both converted to 8-bits for both parts. A3I5 could technically get away with GPU_LA4 if you don't mind losing one bit for alpha in exchange for using half the space to hold the converted texture)
Then there's the oddity. The 4x4-Texel Compressed format, which would more or less require a full conversion to GPU_RGB5551, and any changes to the palette for which it uses or changing the palette base would require a full reconversion, and with the maximum textures size for this format being 1024x512 (or 512x1024), that would be a LOT of conversion. Now, the texture is quite complex, so I dunno if palette animation would be a thing normally used for it, so if it isn't, reconversion may not happen often, if at all.
All of these also have to be converted to Z-curve order as well. These are all just for the 3D engine. This doesn't count the 2D engine(s).