Hi,
it seems some guy at a chinese forum has patched gsdx which supposed to fix some games, and posted some patches (but not all) here:
*removed*
(as not all source patches are posted there, the binary he distributed at skydrive is in violation of GPL so remove the link if inappropriate)
It would be nice to have the patches into official trunk (if the patches work) and maybe contact the author for the source changes which he didn't release as well.
----
(just to rely all source patches he posted - not sure about the CRC value of the game as I don't have them and he didn't post the values either)
it seems some guy at a chinese forum has patched gsdx which supposed to fix some games, and posted some patches (but not all) here:
*removed*
(as not all source patches are posted there, the binary he distributed at skydrive is in violation of GPL so remove the link if inappropriate)
It would be nice to have the patches into official trunk (if the patches work) and maybe contact the author for the source changes which he didn't release as well.
----
(just to rely all source patches he posted - not sure about the CRC value of the game as I don't have them and he didn't post the values either)
Code:
bool GSC_EvangelionJo(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.TBP0 == 0x2BC0 && (fi.FBP == 0 || fi.FBP == 0x1180) && (fi.FPSM | fi.TPSM) == 0)
{
skip = 1;
}
}
return true;
}
bool GSC_NarutimateAccel2(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FBP == 0x3800 && fi.TBP0 == 0 && (fi.FPSM | fi.TPSM) == 0)
{
skip = 105;
}
else if(!fi.TME && fi.FBP == 0x3800 && fi.TBP0 == 0x1E00 && fi.FPSM == 0 && fi.TPSM == 49 && fi.FBMSK == 0xFF000000)
{
skip = 1;
}
}
else
{
if(fi.FBP == 0 && fi.TBP0 == 0x3800 && fi.TME && (fi.FPSM | fi.TPSM) == 0)
{
skip = 1;
}
}
return true;
}
bool GSC_SakuraTaisen(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && (fi.FBP == 0 || fi.FBP == 0x1180) && fi.TBP0 == 0x35B8 && fi.TPSM == PSM_PSMT4)
{
skip = 1;
}
}
return true;
}
bool GSC_Castlevania(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FBP == 0 && fi.TBP0 && fi.TPSM == 10 && fi.FBMSK == 0xFFFFFF)
{
skip = 2;
}
}
return true;
}
bool GSC_Tekken5(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FBP == 0x02ea0 && fi.FPSM == PSM_PSMCT32 && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32)
{
skip = 95;
}
else if(fi.TME && fi.FBP == 0 && fi.TBP0 && (fi.FPSM | fi.TPSM) == PSM_PSMCT32 && fi.FBMSK == 0xFF000000)
{
skip = 1;
}
}
return true;
}
bool GSC_ValkyrieProfile2(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FPSM == fi.TPSM && fi.TPSM == PSM_PSMCT16 && fi.FBMSK == 0x03FFF)
{
skip = 1; // CMV的竖纹
}
else if(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT4HH)
{
skip = 1000; // }
}
else
{
if(!(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT4HH))
{
skip = 0;
}
}
return true;
}
bool GSC_SuikodenTactics(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if( !fi.TME && fi.TPSM == PSM_PSMT8H && fi.FPSM == 0 &&
fi.FBMSK == 0x0FF000000 && fi.TBP0 == 0 && GSUtil::HasSharedBits(fi.FBP, fi.FPSM, fi.TBP0, fi.TPSM))
{
skip = 4;
}
}
return true;
}
bool GSC_CaptainTsubasa(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FBP == 0x1C00 && !fi.FBMSK)
{
skip = 1;
}
}
return true;
}
bool GSC_Oneechanbara2Special(const GSFrameInfo& fi, int& skip)
{
// 高分辨率下重影
if(skip == 0)
{
if(fi.TPSM == PSM_PSMCT24 && fi.TME && fi.FBP == 0x01180)
{
skip = 1; // 重影
}
}
return true;
}
bool GSC_EternalPoison(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TPSM == PSM_PSMCT16S && fi.TBP0 == 0x3200)
{
skip = 1; //阴影
}
}
return true;
}
bool GSC_ShadowOfTheColossus(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.TBP0 == 0x02A00 && fi.FBP == 0x01C00 && fi.TPSM == PSM_PSMCT32)
{
skip = 1; //阴影
}
}
return true;
}
bool GSC_FFX(const GSFrameInfo& fi, int& skip)
{
// 高分辨率下的重影
if(skip == 0)
{
if(GSUtil::HasSharedBits(fi.FBP, fi.FPSM, fi.TBP0, fi.TPSM) && fi.TME &&
fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT24 && fi.TPSM == PSM_PSMCT24)
{
skip = 2; //重影
}
}
return true;
}
bool GSC_RadiataStories(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FPSM == fi.TPSM && fi.TPSM == PSM_PSMCT16 && fi.FBMSK == 0x03FFF)
{
skip = 1; // 竖纹
}
else if(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT4HH)
{
skip = 1000; // }
}
else
{
if(!(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT4HH))
{
skip = 0;
}
}
return true;
}
bool GSC_GensouSuikodenIV(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FBP == fi.FPSM && fi.TBP0 == 0x2E80 && fi.FBMSK==0xFF000000)
{
skip = 20; //阴影
}
}
return true;
}
bool GSC_Tenchu(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.TPSM == PSM_PSMZ16 && fi.FPSM == PSM_PSMCT16 && fi.FBMSK == 0x03FFF)
{
skip = 3; //雾
}
}
return true;
}