This demo features 3D rendering to a 256x240@8bpp surface with full transformation calculation, texture mapping and per-pixel depth buffering. The model is a decimated Spot test model with 512 vertices, 1020 triangles and a 256x64 texture.
So, I wrote this just to get familiar with this system and figure out how to write and optimize a 3D math for it. Also, it would makes a nice reason for me to get up and do some coding streams, as shown here:
Only runs on r39 since I can't find documents for older versions. There's still bunch of incorrect pixels due to depth buffer precision problems.
Controls:
A/D - Move camera left/right
W/S - Move camera up/down
Q/E - Move camera backward/forward (Z value should be an unsigned number but the UI only displays signed numbers)
J/L - Rotate left/right (yaw)
I/K - Rotate up/down (pitch)
U/O - Tilt left/right (roll)
Add wire-frame rendering stage before full rendering for a preview
Full rendering can be interrupted by a camera change
Add joystick support
Left/Right - Move camera left/right
Up/Down - Move camera up/down
L/R - Move camera backward/forward
Y/A - Rotate left/right (yaw)
X/B - Rotate up/down (pitch)
Select+L/Select+R - Tilt left/right (roll)