mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Use _FIXED2FLOAT
Replace x/65536 and x*0.00390625f with _FIXED2FLOAT
This commit is contained in:
parent
31ced0362a
commit
a8349418ce
10
src/gSP.cpp
10
src/gSP.cpp
|
@ -524,7 +524,7 @@ void gSPLightVertexCBFD(u32 v, SPVertex * spVtx)
|
|||
const f32 vy = (vtx.y + gSP.vertexCoordMod[9])*gSP.vertexCoordMod[13] - gSP.lights.pos_xyzw[l][Y];
|
||||
const f32 vz = (vtx.z + gSP.vertexCoordMod[10])*gSP.vertexCoordMod[14] - gSP.lights.pos_xyzw[l][Z];
|
||||
const f32 vw = (vtx.w + gSP.vertexCoordMod[11])*gSP.vertexCoordMod[15] - gSP.lights.pos_xyzw[l][W];
|
||||
const f32 len = (vx*vx + vy*vy + vz*vz + vw*vw) / 65536.0f;
|
||||
const f32 len = _FIXED2FLOAT((vx*vx + vy*vy + vz*vz + vw*vw),16);
|
||||
f32 intensity = gSP.lights.ca[l] / len;
|
||||
if (intensity > 1.0f) intensity = 1.0f;
|
||||
r += gSP.lights.rgb[l][R] * intensity;
|
||||
|
@ -597,7 +597,7 @@ void gSPPointLightVertexZeldaMM(u32 v, float _vecPos[VNUM][4], SPVertex * spVtx)
|
|||
V = 1.0f;
|
||||
|
||||
const f32 KSF = floorf(KS);
|
||||
const f32 D = (KSF * gSP.lights.la[l] * 2.0f + KSF * KSF * gSP.lights.qa[l] / 8.0f) / 65536.0f + 1.0f;
|
||||
const f32 D = _FIXED2FLOAT((KSF * gSP.lights.la[l] * 2.0f + KSF * KSF * gSP.lights.qa[l] / 8.0f),16) + 1.0f;
|
||||
intensity = V / D;
|
||||
} else {
|
||||
// Standard lighting
|
||||
|
@ -634,7 +634,7 @@ void gSPPointLightVertexCBFD(u32 v, SPVertex * spVtx)
|
|||
const f32 vy = (vtx.y + gSP.vertexCoordMod[9])*gSP.vertexCoordMod[13] - gSP.lights.pos_xyzw[l][Y];
|
||||
const f32 vz = (vtx.z + gSP.vertexCoordMod[10])*gSP.vertexCoordMod[14] - gSP.lights.pos_xyzw[l][Z];
|
||||
const f32 vw = (vtx.w + gSP.vertexCoordMod[11])*gSP.vertexCoordMod[15] - gSP.lights.pos_xyzw[l][W];
|
||||
const f32 len = (vx*vx + vy*vy + vz*vz + vw*vw) / 65536.0f;
|
||||
const f32 len = _FIXED2FLOAT((vx*vx + vy*vy + vz*vz + vw*vw),16);
|
||||
float p_i = gSP.lights.ca[l] / len;
|
||||
if (p_i > 1.0f) p_i = 1.0f;
|
||||
intensity *= p_i;
|
||||
|
@ -1720,8 +1720,8 @@ void gSPCoordMod(u32 _w0, u32 _w1)
|
|||
gSP.vertexCoordMod[1+idx] = (f32)(s16)_SHIFTR(_w1, 0, 16);
|
||||
} else if (pos == 0x10) {
|
||||
assert(idx < 3);
|
||||
gSP.vertexCoordMod[4+idx] = _SHIFTR(_w1, 16, 16)/65536.0f;
|
||||
gSP.vertexCoordMod[5+idx] = _SHIFTR(_w1, 0, 16)/65536.0f;
|
||||
gSP.vertexCoordMod[4+idx] = _FIXED2FLOAT(_SHIFTR(_w1, 16, 16),16);
|
||||
gSP.vertexCoordMod[5+idx] = _FIXED2FLOAT(_SHIFTR(_w1, 0, 16),16);
|
||||
gSP.vertexCoordMod[12+idx] = gSP.vertexCoordMod[0+idx] + gSP.vertexCoordMod[4+idx];
|
||||
gSP.vertexCoordMod[13+idx] = gSP.vertexCoordMod[1+idx] + gSP.vertexCoordMod[5+idx];
|
||||
} else if (pos == 0x20) {
|
||||
|
|
|
@ -519,9 +519,9 @@ void ZSortBOSS_Lighting( u32 _w0, u32 _w1 )
|
|||
for(u32 i = 0; i < num; i++) {
|
||||
SPVertex & vtx = pVtx[i];
|
||||
|
||||
vtx.nx = ((s8*)DMEM)[(nsrs++)^3] * 0.00390625f;
|
||||
vtx.ny = ((s8*)DMEM)[(nsrs++)^3] * 0.00390625f;
|
||||
vtx.nz = ((s8*)DMEM)[(nsrs++)^3] * 0.00390625f;
|
||||
vtx.nx = _FIXED2FLOAT(((s8*)DMEM)[(nsrs++)^3],8);
|
||||
vtx.ny = _FIXED2FLOAT(((s8*)DMEM)[(nsrs++)^3],8);
|
||||
vtx.nz = _FIXED2FLOAT(((s8*)DMEM)[(nsrs++)^3],8);
|
||||
|
||||
// TODO: implement light vertex if ever needed
|
||||
//gSPLightVertex(vtx);
|
||||
|
@ -605,17 +605,17 @@ void ZSortBOSS_TransformLights( u32 _w0, u32 _w1 )
|
|||
gSP.lights.rgb[i][G] = (f32)(((u8*)DMEM)[(addr+8+1)^3]) * 0.0039215689f;
|
||||
gSP.lights.rgb[i][B] = (f32)(((u8*)DMEM)[(addr+8+2)^3]) * 0.0039215689f;
|
||||
|
||||
gSP.lights.xyz[i][X] = (f32)(((s8*)DMEM)[(addr+16+0)^3]) * 0.00390625f;
|
||||
gSP.lights.xyz[i][Y] = (f32)(((s8*)DMEM)[(addr+16+1)^3]) * 0.00390625f;
|
||||
gSP.lights.xyz[i][Z] = (f32)(((s8*)DMEM)[(addr+16+2)^3]) * 0.00390625f;
|
||||
gSP.lights.xyz[i][X] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+0)^3]),8);
|
||||
gSP.lights.xyz[i][Y] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+1)^3]),8);
|
||||
gSP.lights.xyz[i][Z] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+2)^3]),8);
|
||||
ZSortBOSS_TransformVectorNormalize( gSP.lights.xyz[i], gSP.matrix.modelView[gSP.matrix.modelViewi] );
|
||||
addr += 24;
|
||||
}
|
||||
for(int i = 0; i < 2; i++)
|
||||
{
|
||||
gSP.lookat.xyz[i][X] = (f32)(((s8*)DMEM)[(addr+16+0)^3]) * 0.00390625f;
|
||||
gSP.lookat.xyz[i][Y] = (f32)(((s8*)DMEM)[(addr+16+1)^3]) * 0.00390625f;
|
||||
gSP.lookat.xyz[i][Z] = (f32)(((s8*)DMEM)[(addr+16+2)^3]) * 0.00390625f;
|
||||
gSP.lookat.xyz[i][X] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+0)^3]),8);
|
||||
gSP.lookat.xyz[i][Y] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+1)^3]),8);
|
||||
gSP.lookat.xyz[i][Z] = _FIXED2FLOAT((((s8*)DMEM)[(addr+16+2)^3]),8);
|
||||
ZSortBOSS_TransformVectorNormalize( gSP.lookat.xyz[i], gSP.matrix.modelView[gSP.matrix.modelViewi] );
|
||||
addr += 24;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user