+
+ xform(xv, varr, mat[mtop]);
+ xform_norm(xv, varr, mat[mtop]);
+
+ if(xv->nz > 0) {
+ /* backface */
+ varr += prim;
+ vcount -= prim;
+ continue;
+ }
+
+ if(opt & XGL_LIGHTING) {
+ ndotl = (xv->nx >> 8) * ldir[0] + (xv->ny >> 8) * ldir[1] + (xv->nz >> 8) * ldir[2];
+ if(ndotl < 0) ndotl = 0;
+ cidx = 128 + (ndotl >> 9);
+ if(cidx > 255) cidx = 255;
+ }
+
+ xv->x = (xv->x << 1) / (xv->z >> 8); /* assume aspect: ~2 */
+ xv->y = (xv->y << 2) / (xv->z >> 8); /* the shift is * PROJ_D */
+ /* projection result is 24.8 */
+ /* viewport */
+ pv->x = (((xv->x + 0x100) >> 1) * vp[2]) + (vp[0] << 8);
+ pv->y = (((0x100 - xv->y) >> 1) * vp[3]) + (vp[1] << 8);
+ varr++;
+
+ for(i=1; i<prim; i++) {