Compare commits

...

10 Commits

Author SHA1 Message Date
Gilad
480a3fe171 GameDB: Add HPO:ATN to Fatal Frame III 2025-05-04 21:32:41 +02:00
Gilad
b160eac49f GameDB: Add ATNTWO to Fatal Frame III 2025-05-04 21:32:41 +02:00
ElTioRata
37ba82b8b7 GameDB: HPO Native w/TO for Resident Evil Dead Aim
Fixes water lines on sewer levels.
2025-05-04 21:31:10 +02:00
chaoticgd
2d604145f1 Docs: Remove advertising gunk from GPL license file 2025-05-04 14:55:45 +02:00
chaoticgd
d60a6df313 Docs: Improve formatting of third party licenses 2025-05-04 14:55:45 +02:00
chaoticgd
236d9e3028 Docs: Add missing third party licenses 2025-05-04 14:55:45 +02:00
chaoticgd
175327e711 Docs: Update LGPL remnant 2025-05-04 14:55:45 +02:00
lightningterror
6342f99504 GS/HW: Fix copy range for shuffles.
We should be using the sizes based on source instead of target
when clamping depth range.
2025-05-04 09:07:45 +02:00
PCSX2 Bot
6164ae9f60 [ci skip] Qt: Update Base Translation. 2025-05-03 20:08:13 -04:00
JordanTheToaster
d2a5b70b2e GS/HW: Remove Haunting Ground CRC 2025-05-03 15:07:38 +02:00
8 changed files with 2474 additions and 1918 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -118,7 +118,7 @@ CPCS-01005:
name-en: "Gun Survivor 4 - BioHazard - Heroes Never Die [with GunCon2]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -2081,7 +2081,7 @@ SCAJ-20139:
name: "Zero - Shisei no Koe" # Fatal Frame - Rei - Irezumi no Sei
region: "NTSC-Unk"
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SCAJ-20140:
name: "Bleach - Erabareshi Tamashi"
region: "NTSC-Unk"
@@ -17320,7 +17320,7 @@ SLES-51448:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -20903,11 +20903,10 @@ SLES-52877:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLES-52882:
name: "Stolen"
region: "PAL-M5"
@@ -23948,7 +23947,7 @@ SLES-53825:
region: "PAL-M5"
compat: 5
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLES-53826:
name: "Tom Clancy's Splinter Cell - Double Agent"
region: "PAL-M5"
@@ -30092,7 +30091,7 @@ SLKA-25038:
name: "Gun Survivor 4 - BioHazard - Heroes Never Die"
region: "NTSC-K"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -34587,7 +34586,7 @@ SLPM-61039:
name-en: "BioHazard Gun Survivor 4 - Heroes Never Die [Store Demo]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -40729,7 +40728,7 @@ SLPM-65245:
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -44525,11 +44524,10 @@ SLPM-65913:
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLPM-65914:
name: "NANA"
name-sort: "ナナ"
@@ -49059,11 +49057,10 @@ SLPM-66638:
name-en: "Demento [CapColle]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLPM-66639:
name: "ストリートファイターⅢ 3rd STRIKE Fight for the future [カプコレ]"
name-sort: "すとりーとふぁいたー3 3rd STRIKE Fight for the future [かぷこれ]"
@@ -58219,6 +58216,8 @@ SLPS-25544:
name-en: "Fatal Frame III - The Tormented"
region: "NTSC-J"
compat: 5
gsHWFixes:
halfPixelOffset: 4 # Reduces blurriness.
SLPS-25545:
name: "ファイティング フォー ワンピース"
name-sort: "ふぁいてぃんぐ ふぉー わんぴーす"
@@ -61443,6 +61442,8 @@ SLPS-73245:
name-sort: "ぜろ しせいのこえ [PlayStation2 the Best]"
name-en: "Fatal Frame III - The Tormented [PlayStation2 the Best]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 4 # Reduces blurriness.
SLPS-73246:
name: "ガンダム トゥルーオデッセイ 失われしGの伝説 [PlayStation2 the Best]"
name-sort: "がんだむ とぅるーおでっせい うしなわれしGのでんせつ [PlayStation2 the Best]"
@@ -61554,7 +61555,7 @@ SLPS-73257:
name-en: "Fatal Frame III - The Tormented [PlayStation 2 the Best - Reprint]"
region: "NTSC-J"
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLPS-73258:
name: "喧嘩番長2 ~フルスロットル~ [PlayStation2 the Best]"
name-sort: "けんかばんちょう2 ふるすろっとる [PlayStation2 the Best]"
@@ -64957,7 +64958,7 @@ SLUS-20669:
gsHWFixes:
PCRTCOverscan: 1 # Shows full image frame.
PCRTCOffsets: 1 # Shows full image frame.
halfPixelOffset: 4 # Fixes character offset with flashlight and blurriness.
halfPixelOffset: 5 # Fixes character offset with flashlight and blurriness. Fixes water lines.
roundSprite: 2 # Fixes font artifacts.
autoFlush: 1 # Fixes light bloom intensity.
nativeScaling: 2 # Fixes post processing.
@@ -67323,11 +67324,10 @@ SLUS-21075:
region: "NTSC-U"
compat: 5
gsHWFixes:
halfPixelOffset: 2 # Reduces blurriness. Normal Vertex works better, but causes some lights to disappear.
roundSprite: 1 # Further reduces blurriness.
halfPixelOffset: 5 # Reduces blurriness.
bilinearUpscale: 1 # Smooths out fire textures.
nativeScaling: 2 # Fixes post processing.
beforeDraw: "OI_HauntingGround" # Fix bloom.
textureInsideRT: 1 # Fixes post effects.
SLUS-21076:
name: "Atari Anthology"
region: "NTSC-U"
@@ -68360,7 +68360,7 @@ SLUS-21244:
region: "NTSC-U"
compat: 5
gsHWFixes:
halfPixelOffset: 1 # Reduces blurriness.
halfPixelOffset: 4 # Reduces blurriness.
SLUS-21245:
name: "Suikoden Tactics"
region: "NTSC-U"

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,12 @@
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
[This file contains the template for the PCSX2 code rights license. For the full
rant-like preamble of the GPL, see GPL.txt]
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
/* PCSX2 - PS2 Emulator for PCs
* Copyright (C) 2002-2019 PCSX2 Dev Team
*
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with PCSX2.
* If not, see <http://www.gnu.org/licenses/>.
*/
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

View File

@@ -1200,75 +1200,6 @@ bool GSHwHack::OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GS
return false;
}
bool GSHwHack::OI_HauntingGround(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
{
// Haunting Ground clears two targets by doing a direct colour write at 0x3000, covering a target at 0x3380.
// To make matters worse, it's masked. This currently isn't handled in our HLE clears, so we need to manually
// remove the other target.
if (rt && !ds && !t && r.IsConstantDirectWriteMemClear())
{
GL_CACHE("GSHwHack::OI_HauntingGround()");
const u32 bp = RFBP;
const u32 bw = RFBW;
const u32 psm = RFPSM;
const u32 fbmsk = RFBMSK;
const GSVector4i rc = r.m_r;
for (int type = 0; type < 2; type++)
{
auto& list = g_texture_cache->m_dst[type];
for (auto i = list.begin(); i != list.end();)
{
GSTextureCache::Target* t = *i;
auto ei = i++;
// There's two cases we hit here - when we clear 3380 via 3000, and when we overlap 3000 by writing to 3380.
// The latter is actually only 256x224, which ends at 337F, but because the game's a pain in the ass, it
// shuffles 512x512, causing the target to expand. It'd actually be shuffling junk and wasting draw cycles,
// but when did that stop anyone? So, we can get away with just saying "if it's before, ignore".
if (t->m_TEX0.TBP0 <= bp)
{
// don't remove ourself..
continue;
}
// Has to intersect.
if (!t->Overlaps(bp, bw, psm, rc))
continue;
// Another annoying case. Sometimes it clears with RGB masked, only writing to A. We don't want to kill the
// target in this case, so we'll dirty A instead.
if (fbmsk != 0)
{
GL_CACHE("OI_HauntingGround(%x, %u, %s, %d,%d => %d,%d): Dirty target at %x %u %s %08X", bp, bw,
psm_str(psm), rc.x, rc.y, rc.z, rc.w, t->m_TEX0.TBP0, t->m_TEX0.TBW, psm_str(t->m_TEX0.PSM),
fbmsk);
g_texture_cache->AddDirtyRectTarget(t, rc, psm, bw, RGBAMask{GSUtil::GetChannelMask(psm, fbmsk)});
}
else
{
GL_CACHE("OI_HauntingGround(%x, %u, %s, %d,%d => %d,%d): Removing target at %x %u %s", bp, bw,
psm_str(psm), rc.x, rc.y, rc.z, rc.w, t->m_TEX0.TBP0, t->m_TEX0.TBW, psm_str(t->m_TEX0.PSM));
// Need to also remove any sources which reference this target.
g_texture_cache->InvalidateSourcesFromTarget(t);
list.erase(ei);
delete t;
}
}
}
g_texture_cache->InvalidateVideoMemType(GSTextureCache::DepthStencil, bp);
}
// Not skipping anything. This is just an invalidation hack.
return true;
}
#undef RPRIM
#undef RCONTEXT
@@ -1519,7 +1450,6 @@ const GSHwHack::Entry<GSRendererHW::OI_Ptr> GSHwHack::s_before_draw_functions[]
CRC_F(OI_SonicUnleashed),
CRC_F(OI_ArTonelico2),
CRC_F(OI_BurnoutGames),
CRC_F(OI_HauntingGround),
};
const GSHwHack::Entry<GSRendererHW::MV_Ptr> GSHwHack::s_move_handler_functions[] = {

View File

@@ -37,7 +37,6 @@ public:
static bool OI_SonicUnleashed(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_ArTonelico2(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool OI_HauntingGround(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t);
static bool MV_Growlanser(GSRendererHW& r);
static bool MV_Ico(GSRendererHW& r);

View File

@@ -6411,8 +6411,8 @@ __ri void GSRendererHW::HandleTextureHazards(const GSTextureCache::Target* rt, c
}
}
copy_range.z = std::min(copy_range.z, copy_size.x);
copy_range.w = std::min(copy_range.w, copy_size.y);
copy_range.z = std::min(copy_range.z, src_target->m_unscaled_size.x);
copy_range.w = std::min(copy_range.w, src_target->m_unscaled_size.y);
}
}
else