GSDx: very minor change to Z value scaling and a note for future changes based on testing real hardware.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2966 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
sudonim1 2010-05-08 01:05:32 +00:00
parent 575a56dc5c
commit a3f9d74255
2 changed files with 5 additions and 2 deletions

View File

@ -158,6 +158,9 @@ public:
vs_sel.fst = PRIM->FST;
vs_sel.logz = m_logz ? 1 : 0;
// The real GS appears to do no masking based on the Z buffer format and writing larger Z values
// than the buffer supports seems to be an error condition on the real GS, causing it to crash.
// We are probably receiving bad coordinates from VU1 in these cases.
if(om_dssel.ztst >= ZTST_ALWAYS && om_dssel.zwe)
{
if(context->ZBUF.PSM == PSM_PSMZ24)
@ -213,7 +216,7 @@ public:
// if (oy != 0) { oy2 *= upscale_Multiplier(); }
//}
vs_cb.VertexScale = GSVector4(sx, -sy, 1.0f / UINT_MAX, 0.0f);
vs_cb.VertexScale = GSVector4(sx, -sy, ldexpf(1, -32), 0.0f);
vs_cb.VertexOffset = GSVector4(ox * sx + ox2 + 1, -(oy * sy + oy2 + 1), 0.0f, -1.0f);
// gs

View File

@ -133,7 +133,7 @@ bool GSTexture11::Save(const string& fn, bool dds)
{
for(uint32 x = 0; x < desc.Width; x++)
{
((uint32*)d)[x] = (uint32)(((float*)s)[x*2] * UINT_MAX);
((uint32*)d)[x] = (uint32)(ldexpf(((float*)s)[x*2], 32));
}
}