int32_t vpscale(int32_t x, int32_t s, int32_t shift);
#pragma aux vpscale = \
"add eax, 0x100" \
- "mul ebx" \
+ "imul ebx" \
"shrd eax, edx, cl" \
parm [eax] [ebx] [ecx] \
- value [eax];
+ value [eax] \
+ modify [eax edx];
+
void g3d_draw_prim(int prim, struct g3d_vertex *varr)
{
if(v[i].w != 0) {
v[i].x = (v[i].x << 4) / (v[i].w >> 4);
v[i].y = (v[i].y << 4) / (v[i].w >> 4);
+ } else {
+ v[i].x >>= 8;
+ v[i].y >>= 8;
}
/* viewport transform */