From 221c040ec2848a388879f175d88094769fe14c74 Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Fri, 20 Sep 2019 18:40:27 +0300 Subject: [PATCH] cps3.cpp: replaced color DMA fading algo, expected to be hardware-accurate --- src/mame/drivers/cps3.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index c5a671e89cb..44b6fe3bacc 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -937,16 +937,12 @@ static const gfx_layout cps3_tiles8x8_layout = static inline u8 get_fade(int c, int f) { - // bit 7 unknown + // bit 7 unused, explicit masked out // bit 6 fade enable / disable - // bit 5 fade mode + // bit 5 fade mode (1 = invert input values and output) // bit 4-0 fade value if (f & 0x40) // Fading enable / disable - { - f &= 0x3f; - c = (f & 0x20) ? (c + (((0x1f - c) * (f & 0x1f)) / 0x1f)) : ((c * f) / 0x1f); - c = std::max(0, std::min(0x1f, c)); - } + c = (f & 0x20) ? ((((c ^ 0x1f) * (~f & 0x1f)) >> 5) ^ 0x1f) : (c * (f & 0x1f) >> 5); return c; } @@ -959,8 +955,6 @@ void cps3_state::set_mame_colours(int colournum, u16 data, u32 fadeval) /* is this 100% correct? */ if (fadeval & 0x40400040) { - //logerror("fadeval %08x\n",fadeval); - r = get_fade(r, (fadeval & 0x7f000000)>>24); g = get_fade(g, (fadeval & 0x007f0000)>>16); b = get_fade(b, (fadeval & 0x0000007f)>>0);