summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author MetalliC <0vetal0@gmail.com>2019-09-20 18:40:27 +0300
committer MetalliC <0vetal0@gmail.com>2019-09-20 18:40:27 +0300
commit221c040ec2848a388879f175d88094769fe14c74 (patch)
tree6314ea4c7d0aa91b280bccd4a4a97d6addd143ea
parent9afcd9c9b97b6c6cd1528ba1e2fe4cfb0ffc3347 (diff)
cps3.cpp: replaced color DMA fading algo, expected to be hardware-accurate
-rw-r--r--src/mame/drivers/cps3.cpp12
1 files 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);