From f1274c1889b7045b079486c4c4e9f0f08e4d7db3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 29 Oct 2026 00:20:14 +0100 Subject: [PATCH] TextureCache: Never rehash the PPGe atlas A HASH_RECHECK forced a rehash even of the RELIABLE atlas, which hashed its fake address as if it were in emulated memory: a memory exception in the middle of the game's next system dialog update. Loading a state saved after one had drawn text was enough to hit it. Co-Authored-By: Claude Opus 5.5 --- GPU/Common/TextureCacheCommon.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/GPU/Common/TextureCacheCommon.cpp b/GPU/Common/TextureCacheCommon.cpp index 78f64d2e7c..83aff9e4bf 100644 --- a/GPU/Common/TextureCacheCommon.cpp +++ b/GPU/Common/TextureCacheCommon.cpp @@ -718,6 +718,11 @@ TextureApplyResult TextureCacheCommon::ApplyTexture(bool doBind) { rehash = true; } + // The PPGe atlas is host data, not in emulated memory, and never changes. + if (entry->status & TexStatus::IS_PPGE_ATLAS) { + rehash = false; + } + // got one! VERBOSE_LOG(Log::TexCache, "%08x: Texture found in cache. Rehash flag = %d", texaddr, (int)rehash);