From b5181c9f4f7f723e4a4f8d5fe93fe1317b3b4f2a Mon Sep 17 00:00:00 2001 From: Tony Wasserka Date: Wed, 26 Jun 2013 15:57:19 +0200 Subject: [PATCH] softgpu: Add support for RGB565, RGBA5111 and RGBA8888 textures. --- GPU/Software/Rasterizer.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/GPU/Software/Rasterizer.cpp b/GPU/Software/Rasterizer.cpp index 2739d70178..5fb841c14f 100644 --- a/GPU/Software/Rasterizer.cpp +++ b/GPU/Software/Rasterizer.cpp @@ -57,6 +57,34 @@ u32 SampleNearest(int level, float s, float t) b = (b << 4) | b; a = (a << 4) | a; return (r << 24) | (g << 16) | (b << 8) | a; + } else if (texfmt == GE_TFMT_5551) { + srcptr += 2 * v * width + 2 * u; + u8 r = (*srcptr) & 0x1F; + u8 g = (((*srcptr) & 0xE0) >> 5) | (((*(srcptr+1))&0x3) << 3); + u8 b = ((*srcptr+1) & 0x7C) >> 2; + u8 a = (*(srcptr+1)) >> 7; + r = (r << 3) | (r >> 2); + g = (g << 3) | (g >> 2); + b = (b << 3) | (b >> 2); + a = (a) ? 0xff : 0; + return (r << 24) | (g << 16) | (b << 8) | a; + } else if (texfmt == GE_TFMT_5650) { + srcptr += 2 * v * width + 2 * u; + u8 r = (*srcptr) & 0x1F; + u8 g = (((*srcptr) & 0xE0) >> 5) | (((*(srcptr+1))&0x7) << 3); + u8 b = ((*srcptr+1) & 0xF8) >> 3; + u8 a = 0xff; + r = (r << 3) | (r >> 2); + g = (g << 2) | (g >> 4); + b = (b << 3) | (b >> 2); + return (r << 24) | (g << 16) | (b << 8) | a; + } else if (texfmt == GE_TFMT_8888) { + srcptr += 4 * v * width + 4 * u; + u8 r = *srcptr++; + u8 g = *srcptr++; + u8 b = *srcptr++; + u8 a = *srcptr++; + return (r << 24) | (g << 16) | (b << 8) | a; } }