GSdx: fix for transparent walls in kingdom hearts (or anything else that sets AA1 with ABE off)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1611 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gabest11 2009-08-07 21:11:27 +00:00
parent 703fd0a597
commit 3bd8037573
3 changed files with 59 additions and 14 deletions

View File

@ -90,22 +90,24 @@ public:
else else
{ {
om_dssel.ztst = ZTST_ALWAYS; om_dssel.ztst = ZTST_ALWAYS;
om_dssel.zwe = 0;
} }
/*
om_dssel.zte = context->TEST.ZTE; if(context->FRAME.PSM != PSM_PSMCT24)
om_dssel.ztst = context->TEST.ZTST; {
om_dssel.zwe = !context->ZBUF.ZMSK; om_dssel.date = context->TEST.DATE;
*/ }
om_dssel.date = context->FRAME.PSM != PSM_PSMCT24 ? context->TEST.DATE : 0;
om_dssel.fba = m_fba ? context->FBA.FBA : 0; if(m_fba)
{
om_dssel.fba = context->FBA.FBA;
}
GSTextureFX::OMBlendSelector om_bsel; GSTextureFX::OMBlendSelector om_bsel;
om_bsel.abe = !IsOpaque(); if(!IsOpaque())
if(om_bsel.abe)
{ {
om_bsel.abe = PRIM->ABE || PRIM->AA1 && m_vt.m_primclass == GS_LINE_CLASS;
om_bsel.a = context->ALPHA.A; om_bsel.a = context->ALPHA.A;
om_bsel.b = context->ALPHA.B; om_bsel.b = context->ALPHA.B;
om_bsel.c = context->ALPHA.C; om_bsel.c = context->ALPHA.C;

View File

@ -392,9 +392,9 @@ void GSRendererSW::GetScanlineParam(GSScanlineParam& p, GS_PRIM_CLASS primclass)
p.sel.pabe = 1; p.sel.pabe = 1;
} }
if(PRIM->AA1 && (primclass == GS_LINE_CLASS || primclass == GS_TRIANGLE_CLASS)) if(m_aa1 && PRIM->AA1 && (primclass == GS_LINE_CLASS || primclass == GS_TRIANGLE_CLASS))
{ {
p.sel.aa1 = m_aa1 ? 1 : 0; p.sel.aa1 = 1;
} }
} }

View File

@ -100,12 +100,55 @@ bool GSUtil::HasCompatibleBits(uint32 spsm, uint32 dpsm)
bool GSUtil::CheckDirectX() bool GSUtil::CheckDirectX()
{ {
if(HINSTANCE hDll = LoadLibrary(format("d3dx9_%d.dll", D3DX_SDK_VERSION).c_str())) OSVERSIONINFOEX version;
memset(&version, 0, sizeof(version));
version.dwOSVersionInfoSize = sizeof(version);
if(GetVersionEx((OSVERSIONINFO*)&version))
{
printf("Windows %d.%d.%d",
version.dwMajorVersion,
version.dwMinorVersion,
version.dwBuildNumber);
if(version.wServicePackMajor > 0)
{
printf(" (%s %d.%d)",
version.szCSDVersion,
version.wServicePackMajor,
version.wServicePackMinor);
}
printf("\n");
}
if(IDirect3D9* d3d = Direct3DCreate9(D3D_SDK_VERSION))
{
D3DADAPTER_IDENTIFIER9 id;
if(S_OK == d3d->GetAdapterIdentifier(D3DADAPTER_DEFAULT, 0, &id))
{
printf("%s (%d.%d.%d.%d)\n",
id.Description,
id.DriverVersion.HighPart >> 16,
id.DriverVersion.HighPart & 0xffff,
id.DriverVersion.LowPart >> 16,
id.DriverVersion.LowPart & 0xffff);
}
d3d->Release();
}
string d3dx9_dll = format("d3dx9_%d.dll", D3DX_SDK_VERSION);
if(HINSTANCE hDll = LoadLibrary(d3dx9_dll.c_str()))
{ {
FreeLibrary(hDll); FreeLibrary(hDll);
} }
else else
{ {
printf("Cannot find %s\n", d3dx9_dll.c_str());
if(MessageBox(NULL, "You need to update directx, would you like to do it now?", "GSdx", MB_YESNO) == IDYES) if(MessageBox(NULL, "You need to update directx, would you like to do it now?", "GSdx", MB_YESNO) == IDYES)
{ {
const char* url = "http://www.microsoft.com/downloads/details.aspx?FamilyId=2DA43D38-DB71-4C1B-BC6A-9B6652CD92A3"; const char* url = "http://www.microsoft.com/downloads/details.aspx?FamilyId=2DA43D38-DB71-4C1B-BC6A-9B6652CD92A3";