GS/HW: Add GSC for Hitman - Blood Money to avoid failed shuffle/move.

This commit is contained in:
refractionpcsx2 2023-07-29 19:02:01 +01:00
parent 9292bbcd1b
commit 66986e66e3
3 changed files with 29 additions and 0 deletions

View File

@ -18834,26 +18834,36 @@ SLES-53028:
region: "PAL-E"
clampModes:
vuClampMode: 0 # Fixes bump mapping issues.
gsHWFixes:
getSkipCount: "GSC_HitmanBloodMoney"
SLES-53029:
name: "Hitman - Blood Money"
region: "PAL-F"
clampModes:
vuClampMode: 0 # Fixes bump mapping issues.
gsHWFixes:
getSkipCount: "GSC_HitmanBloodMoney"
SLES-53030:
name: "Hitman - Blood Money"
region: "PAL-G"
clampModes:
vuClampMode: 0 # Fixes bump mapping issues.
gsHWFixes:
getSkipCount: "GSC_HitmanBloodMoney"
SLES-53031:
name: "Hitman - Blood Money"
region: "PAL-I"
clampModes:
vuClampMode: 0 # Fixes bump mapping issues.
gsHWFixes:
getSkipCount: "GSC_HitmanBloodMoney"
SLES-53032:
name: "Hitman - Blood Money"
region: "PAL-S"
clampModes:
vuClampMode: 0 # Fixes bump mapping issues.
gsHWFixes:
getSkipCount: "GSC_HitmanBloodMoney"
SLES-53035:
name: "Masters of the Universe - He-Man - Defender of Greyskull"
region: "PAL-E"

View File

@ -889,6 +889,23 @@ bool GSHwHack::GSC_BigMuthaTruckers(GSRendererHW& r, int& skip)
return true;
}
bool GSHwHack::GSC_HitmanBloodMoney(GSRendererHW& r, int& skip)
{
// The game does a stupid thing where it backs up the last 2 pages of the framebuffer with shuffles, uploads a CT32 texture to it
// then copies the RGB back (keeping the new alpha only). It's pretty gross, I have no idea why they didn't just upload a new alpha.
// This is a real pain to emulate with the current state of things, so let's just clear the dirty area from the upload and pretend it wasn't there.
// Catch the first draw of the copy back.
if (RFBP > 0 && RTPSM == PSMT8H && RFPSM == PSMCT32)
{
GSTextureCache::Target* target = g_texture_cache->FindOverlappingTarget(RFBP, RFBP + 1);
if (target)
target->m_dirty.clear();
}
return false;
}
bool GSHwHack::OI_PointListPalette(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
{
const u32 n_vertices = r.m_vertex.next;
@ -1458,6 +1475,7 @@ const GSHwHack::Entry<GSRendererHW::GSC_Ptr> GSHwHack::s_get_skip_count_function
CRC_F(GSC_NFSUndercover),
CRC_F(GSC_PolyphonyDigitalGames),
CRC_F(GSC_MetalGearSolid3),
CRC_F(GSC_HitmanBloodMoney),
// Channel Effect
CRC_F(GSC_GiTS),

View File

@ -45,6 +45,7 @@ public:
static bool GSC_PolyphonyDigitalGames(GSRendererHW& r, int& skip);
static bool GSC_MetalGearSolid3(GSRendererHW& r, int& skip);
static bool GSC_BigMuthaTruckers(GSRendererHW& r, int& skip);
static bool GSC_HitmanBloodMoney(GSRendererHW& r, int& skip);
static bool OI_PointListPalette(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_DBZBTGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);