But using 16-bit Z-buffer for 1-bit display seems to be an overkill. Sorting polygons works mostly fine if done right, especially if BSP tree is already used.
Thanks for sharing both an amazing topic - engineering with significant constraints, a great medium - handheld game devices, as well as some wisdom - If you want to make actual progress, try to aim for "good enough".
This is breathtaking. I did something similar[1] porting a 3D dice roller I wrote to a $60 GBA clone, and I _thought_ that was hardcore already. This is next level.
For anyone who enjoys this sort of thing, I found this postmortem of an Alone in the Dark clone for PICO-8 highly informative: https://www.lexaloffle.com/bbs/?tid=3804
Remind me of a similar quest of mine from... 15 years ago or so. Porting Quake on a GP2X handheld with no GPU, not even an FPU, run by an ARMv4. I could not compress the textures enough at the time so you could play only for a few seconds before the memory became too fragmented and the game stopped. But I managed to port a few other games. The PlayDate is a supoercomputer compared to an ARMv4 from 15years ago, but that antique GP2X was at least capable of true-color :). Should still have the code somewhere on github, but that's probably completely unusable on any hardware available in 2026. Maybe the "opengl" compatibility layer could still be useful though?