The system is a lot easier to develop for that I'd expected. Without an OS in the way, setting up is a lot easier. Like the framebuffer, learning the 3D system was pretty quick (despite the lack of documentation... and my ignorance of OpenGL.) I've actually spent a lot more time on my model converter in perl total than on getting the model rendered on the DS.
Speaking of perl - here's the weird thing that happened. When calculating normals I had to convert them to 1.0.9 fixed point and pack the vector into a 32 bit type. In perl I was just using something to the effect of:
$vn += $x *(1<<(10 * 2 - $c));
in a loop where $c = 0..2 and $x is one of the coords. ($vn is the packed vector.)
The problem is that it would give me the correct end result once or twice, and then start giving me a result which would be correct except for being a 64 bit value with the upper 32 bits set to 0xffffffff. No, it didn't ever overflow, and $vn was set to 0 before the loop.
It's still doing that now, but I'm AND-ing it with 0xffffffff to yield only the bits I care about.
I'm glad to be back to coding in C. Give me pointer arithmetic! There's something special about getting code running on hardware too, I can't describe it. Someone nerdier than I called it "progasm."
| < Attention Boston Infidels! | BBC White season: 'Rivers of Blood' > |

