diff options
author | archshift <gh@archshift.com> | 2015-05-10 18:59:22 -0700 |
---|---|---|
committer | archshift <gh@archshift.com> | 2015-05-10 18:59:22 -0700 |
commit | 40310e2132ea0b1a48661883e0fbc845488c51eb (patch) | |
tree | ff40f5a686cae1ff1775f094cab99652405f2869 /src/video_core/debug_utils | |
parent | e98fbadf4a49eecc6d39c082cba683d5d88ea2c5 (diff) |
Implement I4 texture format
@neobrain, could you confirm that this is correct?
It's been tested with various different games and fixes different textures, including in Animal Crossing, Kirby Triple Deluxe, and SMB3D.
Diffstat (limited to 'src/video_core/debug_utils')
-rw-r--r-- | src/video_core/debug_utils/debug_utils.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp index 2d9d8ab1..883df48a 100644 --- a/src/video_core/debug_utils/debug_utils.cpp +++ b/src/video_core/debug_utils/debug_utils.cpp @@ -393,6 +393,17 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture } } + case Regs::TextureFormat::I4: + { + u32 morton_offset = VideoCore::GetMortonOffset(x, y, 1); + const u8* source_ptr = source + morton_offset / 2; + + u8 i = (morton_offset % 2) ? ((*source_ptr & 0xF0) >> 4) : (*source_ptr & 0xF); + i = Color::Convert4To8(i); + + return { i, i, i, 255 }; + } + case Regs::TextureFormat::A4: { u32 morton_offset = VideoCore::GetMortonOffset(x, y, 1); |