Some code that I had initially put in to limit polygon spans to a certain range, and reject any outside of it, ended up inadvertently rejecting spans that were in fact intended to reach the edge of the framebuffer.
There are clearly some DSP bugs left - the first-person tank having a few broken triangles is a clear indicator of that - but with some free time coming on Thursday and Friday, I'm reasonably confident that it should be possible to get things into a relatively sane state by the upcoming code freeze on Saturday for the monthly last-Wednesday release of MAME 0.245.