Fixed Voodoo rendering when integer and floating point coordinates are mixed - fixes HUD in Starsiege Tribes, map in NFS II SE and NFS III.
This commit is contained in:
parent
0601d2d919
commit
231be4ce0e
1 changed files with 6 additions and 7 deletions
|
|
@ -2808,21 +2808,27 @@ static void voodoo_reg_writel(uint32_t addr, uint32_t val, void *p)
|
|||
|
||||
case SST_fvertexAx: case SST_remap_fvertexAx:
|
||||
voodoo->fvertexAx.i = val;
|
||||
voodoo->params.vertexAx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexAx.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
case SST_fvertexAy: case SST_remap_fvertexAy:
|
||||
voodoo->fvertexAy.i = val;
|
||||
voodoo->params.vertexAy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexAy.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
case SST_fvertexBx: case SST_remap_fvertexBx:
|
||||
voodoo->fvertexBx.i = val;
|
||||
voodoo->params.vertexBx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexBx.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
case SST_fvertexBy: case SST_remap_fvertexBy:
|
||||
voodoo->fvertexBy.i = val;
|
||||
voodoo->params.vertexBy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexBy.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
case SST_fvertexCx: case SST_remap_fvertexCx:
|
||||
voodoo->fvertexCx.i = val;
|
||||
voodoo->params.vertexCx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexCx.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
case SST_fvertexCy: case SST_remap_fvertexCy:
|
||||
voodoo->fvertexCy.i = val;
|
||||
voodoo->params.vertexCy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexCy.f * 16.0f) & 0xffff;
|
||||
break;
|
||||
|
||||
case SST_fstartR: case SST_remap_fstartR:
|
||||
|
|
@ -2940,13 +2946,6 @@ static void voodoo_reg_writel(uint32_t addr, uint32_t val, void *p)
|
|||
break;
|
||||
|
||||
case SST_ftriangleCMD:
|
||||
voodoo->params.vertexAx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexAx.f * 16.0f) & 0xffff;
|
||||
voodoo->params.vertexAy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexAy.f * 16.0f) & 0xffff;
|
||||
voodoo->params.vertexBx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexBx.f * 16.0f) & 0xffff;
|
||||
voodoo->params.vertexBy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexBy.f * 16.0f) & 0xffff;
|
||||
voodoo->params.vertexCx = (int32_t)(int16_t)(int32_t)(voodoo->fvertexCx.f * 16.0f) & 0xffff;
|
||||
voodoo->params.vertexCy = (int32_t)(int16_t)(int32_t)(voodoo->fvertexCy.f * 16.0f) & 0xffff;
|
||||
|
||||
voodoo->params.sign = val & (1 << 31);
|
||||
|
||||
if (voodoo->ncc_dirty)
|
||||
|
|
|
|||
Loading…
Reference in a new issue