mirror of https://github.com/PCSX2/pcsx2.git
zzogl-pg: Work on the FOGCOL & GIFRegHandlerTEXA registers in the new register code.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3437 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
1adf69bfb2
commit
d536cc5cde
|
@ -626,17 +626,12 @@ void __fastcall GIFRegHandlerSCANMSK(u32* data)
|
||||||
{
|
{
|
||||||
FUNCLOG
|
FUNCLOG
|
||||||
GIFRegSCANMSK* r = (GIFRegSCANMSK*)(data);
|
GIFRegSCANMSK* r = (GIFRegSCANMSK*)(data);
|
||||||
// ZeroGS::FlushBoth();
|
|
||||||
// ZeroGS::ResolveC(&ZeroGS::vb[0]);
|
|
||||||
// ZeroGS::ResolveZ(&ZeroGS::vb[0]);
|
|
||||||
// GSdx flushes here, like this:
|
|
||||||
/*if(r->SCANMSK != gs.smask)
|
|
||||||
{
|
|
||||||
//Flush
|
|
||||||
}*/
|
|
||||||
if(r->MSK != gs.smask)
|
if(r->MSK != gs.smask)
|
||||||
{
|
{
|
||||||
ZeroGS::FlushBoth();
|
ZeroGS::FlushBoth();
|
||||||
|
// ZeroGS::ResolveC(&ZeroGS::vb[0]);
|
||||||
|
// ZeroGS::ResolveZ(&ZeroGS::vb[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
gs.smask = r->MSK;
|
gs.smask = r->MSK;
|
||||||
|
@ -710,38 +705,34 @@ void __fastcall GIFRegHandlerTEXA(u32* data)
|
||||||
{
|
{
|
||||||
FUNCLOG
|
FUNCLOG
|
||||||
GIFRegTEXA* r = (GIFRegTEXA*)(data);
|
GIFRegTEXA* r = (GIFRegTEXA*)(data);
|
||||||
texaInfo newinfo;
|
|
||||||
/*if(r->TEXA != m_env.TEXA)
|
|
||||||
{
|
|
||||||
Flush();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
newinfo.aem = r->AEM;
|
if ((r->AEM != gs.texa.aem) || (r->TA0 != gs.texa.ta[0]) || (r->TA1 != gs.texa.ta[1]))
|
||||||
newinfo.ta[0] = r->TA0;
|
|
||||||
newinfo.ta[1] = r->TA1;
|
|
||||||
|
|
||||||
if (*(u32*)&newinfo != *(u32*)&gs.texa)
|
|
||||||
{
|
{
|
||||||
ZeroGS::FlushBoth();
|
ZeroGS::FlushBoth();
|
||||||
|
|
||||||
*(u32*)&gs.texa = *(u32*) & newinfo;
|
|
||||||
|
|
||||||
gs.texa.fta[0] = newinfo.ta[0] / 255.0f;
|
|
||||||
gs.texa.fta[1] = newinfo.ta[1] / 255.0f;
|
|
||||||
|
|
||||||
ZeroGS::vb[0].bTexConstsSync = false;
|
ZeroGS::vb[0].bTexConstsSync = false;
|
||||||
ZeroGS::vb[1].bTexConstsSync = false;
|
ZeroGS::vb[1].bTexConstsSync = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gs.texa.aem = r->AEM;
|
||||||
|
gs.texa.ta[0] = r->TA0;
|
||||||
|
gs.texa.ta[1] = r->TA1;
|
||||||
|
gs.texa.fta[0] = r->TA0 / 255.0f;
|
||||||
|
gs.texa.fta[1] = r->TA1 / 255.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall GIFRegHandlerFOGCOL(u32* data)
|
void __fastcall GIFRegHandlerFOGCOL(u32* data)
|
||||||
{
|
{
|
||||||
FUNCLOG
|
FUNCLOG
|
||||||
//GIFRegFOGCOL* r = (GIFRegFOGCOL*)(data);
|
GIFRegFOGCOL* r = (GIFRegFOGCOL*)(data);
|
||||||
|
|
||||||
// Yeah, it even flushes here.
|
if (gs.fogcol != r->ai32[0])
|
||||||
// I'll worry about changing this later.
|
{
|
||||||
ZeroGS::SetFogColor(data[0]&0xffffff);
|
ZeroGS::FlushBoth();
|
||||||
|
}
|
||||||
|
|
||||||
|
ZeroGS::SetFogColor(r);
|
||||||
|
gs.fogcol = r->ai32[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall GIFRegHandlerTEXFLUSH(u32* data)
|
void __fastcall GIFRegHandlerTEXFLUSH(u32* data)
|
||||||
|
|
|
@ -614,9 +614,6 @@ __forceinline void MOVFOG(VertexGPU *p, Vertex gsf)
|
||||||
|
|
||||||
int Values[100] = {0, };
|
int Values[100] = {0, };
|
||||||
|
|
||||||
#ifndef __LINUX__
|
|
||||||
__forceinline
|
|
||||||
#endif
|
|
||||||
void SET_VERTEX(VertexGPU *p, int Index, const VB& curvb)
|
void SET_VERTEX(VertexGPU *p, int Index, const VB& curvb)
|
||||||
{
|
{
|
||||||
int index = Index;
|
int index = Index;
|
||||||
|
@ -789,9 +786,6 @@ void ZeroGS::KickTriangleFan()
|
||||||
OUTPUT_VERT(p[2], 2);
|
OUTPUT_VERT(p[2], 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __LINUX__
|
|
||||||
__forceinline
|
|
||||||
#endif
|
|
||||||
void SetKickVertex(VertexGPU *p, Vertex v, int next, const VB& curvb)
|
void SetKickVertex(VertexGPU *p, Vertex v, int next, const VB& curvb)
|
||||||
{
|
{
|
||||||
SET_VERTEX(p, next, curvb);
|
SET_VERTEX(p, next, curvb);
|
||||||
|
@ -886,6 +880,19 @@ void ZeroGS::SetFogColor(u32 fog)
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZeroGS::SetFogColor(GIFRegFOGCOL* fog)
|
||||||
|
{
|
||||||
|
FUNCLOG
|
||||||
|
|
||||||
|
SetShaderCaller("SetFogColor");
|
||||||
|
Vector v;
|
||||||
|
|
||||||
|
v.x = fog->FCR / 255.0f;
|
||||||
|
v.y = fog->FCG / 255.0f;
|
||||||
|
v.z = fog->FCB / 255.0f;
|
||||||
|
ZZcgSetParameter4fv(g_fparamFogColor, v, "g_fParamFogColor");
|
||||||
|
}
|
||||||
|
|
||||||
void ZeroGS::ExtWrite()
|
void ZeroGS::ExtWrite()
|
||||||
{
|
{
|
||||||
FUNCLOG
|
FUNCLOG
|
||||||
|
|
|
@ -492,6 +492,7 @@ void SetDestAlphaTest();
|
||||||
bool IsWriteDestAlphaTest();
|
bool IsWriteDestAlphaTest();
|
||||||
|
|
||||||
void SetFogColor(u32 fog);
|
void SetFogColor(u32 fog);
|
||||||
|
void SetFogColor(GIFRegFOGCOL* fog);
|
||||||
void SaveTex(tex0Info* ptex, int usevid);
|
void SaveTex(tex0Info* ptex, int usevid);
|
||||||
char* NamedSaveTex(tex0Info* ptex, int usevid);
|
char* NamedSaveTex(tex0Info* ptex, int usevid);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue