From 358509548ac512cf1fa7b3f81e258f4ac58cfe43 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Fri, 14 Jun 2013 17:10:10 +0000 Subject: [PATCH] powervr2: Fix blc/blic [O. Galibert] --- src/mame/video/powervr2.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mame/video/powervr2.c b/src/mame/video/powervr2.c index 8511807a887..3120cb8c7ec 100644 --- a/src/mame/video/powervr2.c +++ b/src/mame/video/powervr2.c @@ -96,7 +96,6 @@ const int powervr2_device::pvr_wordspolygon[24] = {8,8,8,8,8, 8, 8,8,8,8,16,16,8 #define DEBUG_PALRAM (1) #define DEBUG_PVRCTRL (0) -// Perform a standard bilinear filter across four pixels inline INT32 powervr2_device::clamp(INT32 in, INT32 min, INT32 max) { if(in < min) return min; @@ -104,6 +103,7 @@ inline INT32 powervr2_device::clamp(INT32 in, INT32 min, INT32 max) return in; } +// Perform a standard bilinear filter across four pixels inline UINT32 powervr2_device::bilinear_filter(UINT32 c0, UINT32 c1, UINT32 c2, UINT32 c3, float u, float v) { UINT32 ui = (u * 256.0); @@ -130,12 +130,12 @@ inline UINT32 powervr2_device::blc(UINT32 c1, UINT32 c2) { UINT32 cr = (((c1 & 0x000000ff)*(c2 & 0x000000ff) & 0x0000ff00) >> 8) | - (((c1 & 0x0000ff00)*(c2 & 0x0000ff00) & 0x00ff0000) >> 8); + (((c1 & 0x0000ff00)*(c2 & 0x0000ff00) & 0xff000000) >> 16); c1 >>= 16; c2 >>= 16; cr |= (((c1 & 0x000000ff)*(c2 & 0x000000ff) & 0x0000ff00) << 8) | - (((c1 & 0x0000ff00)*(c2 & 0x0000ff00) & 0x00ff0000) << 8); + (((c1 & 0x0000ff00)*(c2 & 0x0000ff00) & 0xff000000)); return cr; } @@ -144,12 +144,12 @@ inline UINT32 powervr2_device::blic(UINT32 c1, UINT32 c2) { UINT32 cr = (((c1 & 0x000000ff)*(0x00100-(c2 & 0x000000ff)) & 0x0000ff00) >> 8) | - (((c1 & 0x0000ff00)*(0x10000-(c2 & 0x0000ff00)) & 0x00ff0000) >> 8); + (((c1 & 0x0000ff00)*(0x10000-(c2 & 0x0000ff00)) & 0xff000000) >> 16); c1 >>= 16; c2 >>= 16; cr |= (((c1 & 0x000000ff)*(0x00100-(c2 & 0x000000ff)) & 0x0000ff00) << 8) | - (((c1 & 0x0000ff00)*(0x10000-(c2 & 0x0000ff00)) & 0x00ff0000) << 8); + (((c1 & 0x0000ff00)*(0x10000-(c2 & 0x0000ff00)) & 0xff000000)); return cr; }