mirror of https://github.com/PCSX2/pcsx2.git
gsdx-hw: Purge CastlevaniaCoD, CastlevaniaLoI, NanoBreaker crc hacks.
Shadows emulated correctly with accumulation blend, d3d11 misses sw blend for extra accuracy (darker shadow). gsdevice11: Remove unused IsCLR1() variable.
This commit is contained in:
parent
60cf62fea1
commit
6024359011
|
@ -310,14 +310,6 @@ CRC::Game CRC::m_games[] =
|
||||||
{0x87844524, RedDeadRevolver, RU, 0}, // Unofficial RU-version
|
{0x87844524, RedDeadRevolver, RU, 0}, // Unofficial RU-version
|
||||||
{0x6DF62AEA, BleachBladeBattlers, JP, 0},
|
{0x6DF62AEA, BleachBladeBattlers, JP, 0},
|
||||||
{0x6EB71AB0, BleachBladeBattlers, JP, 0}, // 2nd
|
{0x6EB71AB0, BleachBladeBattlers, JP, 0}, // 2nd
|
||||||
{0x3A446111, CastlevaniaCoD, US, 0},
|
|
||||||
{0xF321BC38, CastlevaniaCoD, EU, 0},
|
|
||||||
{0x950876FA, CastlevaniaCoD, KO, 0},
|
|
||||||
{0x237B84D3, CastlevaniaCoD, CH, 0},
|
|
||||||
{0x28270F7D, CastlevaniaLoI, US, 0},
|
|
||||||
{0x306CDADA, CastlevaniaLoI, EU, 0},
|
|
||||||
{0xA36CFF6C, CastlevaniaLoI, JP, 0},
|
|
||||||
{0x9A93FE5D, CastlevaniaLoI, KO, 0},
|
|
||||||
{0xCBB87BF9, EvangelionJo, JP, 0}, // cutie comment
|
{0xCBB87BF9, EvangelionJo, JP, 0}, // cutie comment
|
||||||
{0xC5B75C7C, Oneechanbara2Special, JP, 0}, // cutie comment
|
{0xC5B75C7C, Oneechanbara2Special, JP, 0}, // cutie comment
|
||||||
{0xC725CC6C, Oneechanbara2Special, JP, 0},
|
{0xC725CC6C, Oneechanbara2Special, JP, 0},
|
||||||
|
@ -374,10 +366,6 @@ CRC::Game CRC::m_games[] =
|
||||||
{0x43AB7214, TalesOfLegendia, US, 0},
|
{0x43AB7214, TalesOfLegendia, US, 0},
|
||||||
{0x1F8640E0, TalesOfLegendia, JP, 0},
|
{0x1F8640E0, TalesOfLegendia, JP, 0},
|
||||||
{0xE4F5DA2B, TalesOfLegendia, KO, 0},
|
{0xE4F5DA2B, TalesOfLegendia, KO, 0},
|
||||||
{0xA79B0491, NanoBreaker, JP, 0},
|
|
||||||
{0x98C7B76D, NanoBreaker, US, 0},
|
|
||||||
{0x7098BE76, NanoBreaker, KO, 0},
|
|
||||||
{0x9B89F425, NanoBreaker, EU, 0},
|
|
||||||
{0x519E816B, Kunoichi, US, 0}, // Nightshade
|
{0x519E816B, Kunoichi, US, 0}, // Nightshade
|
||||||
{0x3FB419FD, Kunoichi, JP, 0},
|
{0x3FB419FD, Kunoichi, JP, 0},
|
||||||
{0x086D198E, Kunoichi, CH, 0},
|
{0x086D198E, Kunoichi, CH, 0},
|
||||||
|
|
|
@ -40,8 +40,6 @@ public:
|
||||||
BurnoutDominator,
|
BurnoutDominator,
|
||||||
BurnoutRevenge,
|
BurnoutRevenge,
|
||||||
BurnoutTakedown,
|
BurnoutTakedown,
|
||||||
CastlevaniaCoD,
|
|
||||||
CastlevaniaLoI,
|
|
||||||
Clannad,
|
Clannad,
|
||||||
CrashBandicootWoC,
|
CrashBandicootWoC,
|
||||||
DarkCloud,
|
DarkCloud,
|
||||||
|
@ -97,7 +95,6 @@ public:
|
||||||
Manhunt2,
|
Manhunt2,
|
||||||
MetalSlug6,
|
MetalSlug6,
|
||||||
MidnightClub3,
|
MidnightClub3,
|
||||||
NanoBreaker,
|
|
||||||
NicktoonsUnite,
|
NicktoonsUnite,
|
||||||
Okami,
|
Okami,
|
||||||
Oneechanbara2Special,
|
Oneechanbara2Special,
|
||||||
|
|
|
@ -311,11 +311,6 @@ public:
|
||||||
operator uint32() {return key & 0x3fff;}
|
operator uint32() {return key & 0x3fff;}
|
||||||
|
|
||||||
OMBlendSelector() : key(0) {}
|
OMBlendSelector() : key(0) {}
|
||||||
|
|
||||||
bool IsCLR1() const
|
|
||||||
{
|
|
||||||
return (key & 0x19f) == 0x93; // abe == 1 && a == 1 && b == 2 && d == 1
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
|
@ -988,19 +988,6 @@ bool GSC_GetaWayGames(const GSFrameInfo& fi, int& skip)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSC_NanoBreaker(const GSFrameInfo& fi, int& skip)
|
|
||||||
{
|
|
||||||
if(skip == 0)
|
|
||||||
{
|
|
||||||
if(fi.TME && fi.FBP == 0x0 && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 == 0x03800 || fi.TBP0 == 0x03900) && fi.TPSM == PSM_PSMCT16S)
|
|
||||||
{
|
|
||||||
skip = 2; // Removes shadows
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
||||||
|
@ -1120,31 +1107,6 @@ bool GSC_SlyGames(const GSFrameInfo& fi, int& skip)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSC_CastlevaniaGames(const GSFrameInfo& fi, int& skip)
|
|
||||||
{
|
|
||||||
if(skip == 0)
|
|
||||||
{
|
|
||||||
// This hack removes the shadows and globally darker image
|
|
||||||
// I think there are 2 issues on GSdx
|
|
||||||
//
|
|
||||||
// 1/ potential not correctly supported colclip.
|
|
||||||
//
|
|
||||||
// 2/ use of a 32 bits format to emulate a 16 bit formats
|
|
||||||
// For example, if you blend 64 time the value 4 on a dark destination pixels
|
|
||||||
//
|
|
||||||
// FMT32: 4*64 = 256 <= white pixels
|
|
||||||
//
|
|
||||||
// FMT16: output of blending will always be 0 because the 3 lsb of color is dropped.
|
|
||||||
// Therefore the pixel remains dark !!!
|
|
||||||
if(fi.TME && fi.FBP == 0 && fi.TBP0 && fi.TPSM == 10 && fi.FBMSK == 0xFFFFFF)
|
|
||||||
{
|
|
||||||
skip = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSC_XenosagaE3(const GSFrameInfo& fi, int& skip)
|
bool GSC_XenosagaE3(const GSFrameInfo& fi, int& skip)
|
||||||
{
|
{
|
||||||
if(skip == 0)
|
if(skip == 0)
|
||||||
|
@ -1601,23 +1563,14 @@ void GSState::SetupCrcHack()
|
||||||
lut[CRC::GetaWayBlackMonday] = GSC_GetaWayGames; // Blending High
|
lut[CRC::GetaWayBlackMonday] = GSC_GetaWayGames; // Blending High
|
||||||
lut[CRC::TenchuFS] = GSC_TenchuGames;
|
lut[CRC::TenchuFS] = GSC_TenchuGames;
|
||||||
lut[CRC::TenchuWoH] = GSC_TenchuGames;
|
lut[CRC::TenchuWoH] = GSC_TenchuGames;
|
||||||
|
lut[CRC::Sly2] = GSC_SlyGames; // SW blending on fbmask + Upscaling issue
|
||||||
// Accumulation blend
|
lut[CRC::Sly3] = GSC_SlyGames; // SW blending on fbmask + Upscaling issue
|
||||||
lut[CRC::NanoBreaker] = GSC_NanoBreaker;
|
|
||||||
|
|
||||||
// Needs testing
|
// Needs testing
|
||||||
lut[CRC::Grandia3] = GSC_Grandia3;
|
lut[CRC::Grandia3] = GSC_Grandia3;
|
||||||
lut[CRC::HauntingGround] = GSC_HauntingGround; // + Texture cache issue + Date
|
lut[CRC::HauntingGround] = GSC_HauntingGround; // + Texture cache issue + Date
|
||||||
lut[CRC::XenosagaE3] = GSC_XenosagaE3;
|
lut[CRC::XenosagaE3] = GSC_XenosagaE3;
|
||||||
|
|
||||||
// These games might requires accurate fbmask
|
|
||||||
lut[CRC::Sly2] = GSC_SlyGames; // + Upscaling issue
|
|
||||||
lut[CRC::Sly3] = GSC_SlyGames; // + Upscaling issue
|
|
||||||
|
|
||||||
// These games require accurate_colclip (perf)
|
|
||||||
lut[CRC::CastlevaniaCoD] = GSC_CastlevaniaGames;
|
|
||||||
lut[CRC::CastlevaniaLoI] = GSC_CastlevaniaGames;
|
|
||||||
|
|
||||||
// These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to Aggressive)
|
// These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to Aggressive)
|
||||||
// Needs at least Basic Blending,
|
// Needs at least Basic Blending,
|
||||||
// see https://github.com/PCSX2/pcsx2/pull/2921
|
// see https://github.com/PCSX2/pcsx2/pull/2921
|
||||||
|
|
Loading…
Reference in New Issue