summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-02-25 23:05:14 -0300
committerGravatar Yuri Kunde Schlesner2015-02-25 23:05:14 -0300
commitea3c99f3a2422c98f383df0881348b1b4a3c91d2 (patch)
treea159087da1d5d57754524150b265cdbbcc03aebc
parentMerge pull request #604 from Subv/arc_ssd (diff)
downloadyuzu-ea3c99f3a2422c98f383df0881348b1b4a3c91d2.tar.gz
yuzu-ea3c99f3a2422c98f383df0881348b1b4a3c91d2.tar.xz
yuzu-ea3c99f3a2422c98f383df0881348b1b4a3c91d2.zip
Video core: Fix A4 texture decoding
It was trying to take the LSB from `coarse_x`, which would always be 0 and thus would always return the same texel from each byte. To add insult to the injury, the conditional was actually the wrong way around too. Fixes blocky text in OoT.
-rw-r--r--src/video_core/debug_utils/debug_utils.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp
index 795449423..f436aa541 100644
--- a/src/video_core/debug_utils/debug_utils.cpp
+++ b/src/video_core/debug_utils/debug_utils.cpp
@@ -436,9 +436,9 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
436 436
437 case Regs::TextureFormat::A4: 437 case Regs::TextureFormat::A4:
438 { 438 {
439 const u8* source_ptr = source + offset / 2 + i / 2; 439 const u8* source_ptr = source + (offset + i) / 2;
440 440
441 u8 a = (coarse_x % 2) ? ((*source_ptr)&0xF) : (((*source_ptr) & 0xF0) >> 4); 441 u8 a = (i % 2) ? ((*source_ptr & 0xF0) >> 4) : (*source_ptr & 0xF);
442 a = Color::Convert4To8(a); 442 a = Color::Convert4To8(a);
443 443
444 if (disable_alpha) { 444 if (disable_alpha) {