GSdx: Adjust Sonic Unleashed crc hacks.

Move crc hacks back to Partial (OpenGL) level.
Game experiences improper texture shuffle emulation and half screen
bottom issue.
This commit is contained in:
lightningterror 2018-05-19 08:48:24 +02:00
parent 9b82449542
commit ff3052935e
1 changed files with 25 additions and 23 deletions

View File

@ -936,6 +936,28 @@ bool GSC_SakuraWarsSoLongMyLove(const GSFrameInfo& fi, int& skip)
return true; return true;
} }
bool GSC_SonicUnleashed(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FPSM == PSM_PSMCT16S && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT16)
{
// Improper Texture shuffle emulation.
// Half Screen bottom issue.
skip = 1000; // shadow
}
}
else
{
if(fi.TME && fi.FBP == 0x00000 && fi.FPSM == PSM_PSMCT16 && fi.TPSM == PSM_PSMCT16S)
{
skip = 2;
}
}
return true;
}
bool GSC_FightingBeautyWulong(const GSFrameInfo& fi, int& skip) bool GSC_FightingBeautyWulong(const GSFrameInfo& fi, int& skip)
{ {
if(skip == 0) if(skip == 0)
@ -1519,26 +1541,6 @@ bool GSC_GodOfWar2(const GSFrameInfo& fi, int& skip)
return true; return true;
} }
bool GSC_SonicUnleashed(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && fi.FPSM == PSM_PSMCT16S && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT16)
{
skip = 1000; // shadow
}
}
else
{
if(fi.TME && fi.FBP == 0x00000 && fi.FPSM == PSM_PSMCT16 && fi.TPSM == PSM_PSMCT16S)
{
skip = 2;
}
}
return true;
}
bool GSC_StarOcean3(const GSFrameInfo& fi, int& skip) bool GSC_StarOcean3(const GSFrameInfo& fi, int& skip)
{ {
// The game emulate a stencil buffer with the alpha channel of the RT // The game emulate a stencil buffer with the alpha channel of the RT
@ -2253,6 +2255,7 @@ void GSState::SetupCrcHack()
lut[CRC::DBZBT2] = GSC_DBZBT2; lut[CRC::DBZBT2] = GSC_DBZBT2;
lut[CRC::DBZBT3] = GSC_DBZBT3; lut[CRC::DBZBT3] = GSC_DBZBT3;
lut[CRC::DemonStone] = GSC_DemonStone; lut[CRC::DemonStone] = GSC_DemonStone;
lut[CRC::SonicUnleashed] = GSC_SonicUnleashed; // + Texture shuffle
lut[CRC::Tekken5] = GSC_Tekken5; lut[CRC::Tekken5] = GSC_Tekken5;
// These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to DX only) // These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to DX only)
@ -2273,12 +2276,12 @@ void GSState::SetupCrcHack()
lut[CRC::SoTC] = GSC_SoTC; lut[CRC::SoTC] = GSC_SoTC;
} }
// Hack that were fixed on openGL // Hacks that were fixed on OpenGL
if (Dx_only) { if (Dx_only) {
// Depth // Depth
lut[CRC::Bully] = GSC_Bully; lut[CRC::Bully] = GSC_Bully;
lut[CRC::BullyCC] = GSC_BullyCC; lut[CRC::BullyCC] = GSC_BullyCC;
lut[CRC::FinalFightStreetwise] = GSC_FinalFightStreetwise; // + blending lut[CRC::FinalFightStreetwise] = GSC_FinalFightStreetwise; // + Blending
lut[CRC::FrontMission5] = GSC_FrontMission5; lut[CRC::FrontMission5] = GSC_FrontMission5;
lut[CRC::GodOfWar2] = GSC_GodOfWar2; lut[CRC::GodOfWar2] = GSC_GodOfWar2;
lut[CRC::HeavyMetalThunder] = GSC_HeavyMetalThunder; lut[CRC::HeavyMetalThunder] = GSC_HeavyMetalThunder;
@ -2303,7 +2306,6 @@ void GSState::SetupCrcHack()
lut[CRC::OnePieceGrandBattle] = GSC_OnePieceGrandBattle; lut[CRC::OnePieceGrandBattle] = GSC_OnePieceGrandBattle;
lut[CRC::SpyroEternalNight] = GSC_SpyroEternalNight; lut[CRC::SpyroEternalNight] = GSC_SpyroEternalNight;
lut[CRC::SpyroNewBeginning] = GSC_SpyroNewBeginning; lut[CRC::SpyroNewBeginning] = GSC_SpyroNewBeginning;
lut[CRC::SonicUnleashed] = GSC_SonicUnleashed;
// Those games might requires accurate fbmask // Those games might requires accurate fbmask
lut[CRC::Sly2] = GSC_Sly2; lut[CRC::Sly2] = GSC_Sly2;