diff options
author | cam900 <dbtlrchl@naver.com> | 2020-02-28 13:24:54 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-27 23:24:54 -0500 |
commit | aefdb21281c7cf99e26f5db645e8ab9c2cedd674 (patch) | |
tree | 8f3df3ea710fe42342d89b0a6c1fbd0868e6feac /src/mame/video/deco_ace.cpp | |
parent | 0143128783c3ee835f258fcc7de58285b0dd32b7 (diff) |
Improve mixing behavior related to DECO ACE chip (#6370)
* Improve mixing behavior related to DECO ACE chip
boogwing.cpp : Fix priority with alternative palette fading, Fix palette effects
deco32.cpp : Add notes, nslasher : Fix palette effects, Background color
deco16ic.cpp : Fix drawing behavior with 16bit indexed bitmap
* deco_ace.cpp : Add notes of splitted palette area
Diffstat (limited to 'src/mame/video/deco_ace.cpp')
-rw-r--r-- | src/mame/video/deco_ace.cpp | 51 |
1 files changed, 15 insertions, 36 deletions
diff --git a/src/mame/video/deco_ace.cpp b/src/mame/video/deco_ace.cpp index e4a84d7deed..05330443da7 100644 --- a/src/mame/video/deco_ace.cpp +++ b/src/mame/video/deco_ace.cpp @@ -67,8 +67,6 @@ deco_ace_device::deco_ace_device(const machine_config &mconfig, const char *tag, : device_t(mconfig, DECO_ACE, tag, owner, clock), device_video_interface(mconfig, *this), device_palette_interface(mconfig, *this), - m_palette_effect_min(0x100), - m_palette_effect_max(0xfff), m_paletteram(nullptr), m_paletteram_buffered(nullptr), m_ace_ram(nullptr) @@ -96,8 +94,6 @@ void deco_ace_device::device_start() void deco_ace_device::device_reset() { - m_palette_effect_min = 0x100; /* Screenshots seem to suggest ACE fades do not affect playfield 1 palette (0-255) */ - m_palette_effect_max = 0xfff; memset(m_ace_ram.get(),0,0x28); } @@ -173,41 +169,24 @@ void deco_ace_device::palette_update() int b = (m_paletteram_buffered[i] >>16) & 0xff; int g = (m_paletteram_buffered[i] >> 8) & 0xff; int r = (m_paletteram_buffered[i] >> 0) & 0xff; + set_pen_color(i + 2048, rgb_t(r, g, b)); // raw palettes - if ((i>=m_palette_effect_min) && (i<=m_palette_effect_max)) + switch (mode) { - switch (mode) - { - default: - case 0x1100: // multiplicative fade - /* Yeah, this should really be fixed point, I know */ - b = std::max<int>(0, std::min<int>(255, u8((b + (((fadeptb - b) * fadepsb) / 255))))); - g = std::max<int>(0, std::min<int>(255, u8((g + (((fadeptg - g) * fadepsg) / 255))))); - r = std::max<int>(0, std::min<int>(255, u8((r + (((fadeptr - r) * fadepsr) / 255))))); - break; - case 0x1000: // additive fade, correct? - b = std::min(b + fadepsb, 0xff); - g = std::min(g + fadepsg, 0xff); - r = std::min(r + fadepsr, 0xff); - break; - } + default: + case 0x1100: // multiplicative fade + /* Yeah, this should really be fixed point, I know */ + b = std::max<int>(0, std::min<int>(255, u8((b + (((fadeptb - b) * fadepsb) / 255))))); + g = std::max<int>(0, std::min<int>(255, u8((g + (((fadeptg - g) * fadepsg) / 255))))); + r = std::max<int>(0, std::min<int>(255, u8((r + (((fadeptr - r) * fadepsr) / 255))))); + break; + case 0x1000: // additive fade, correct? + b = std::min(b + fadepsb, 0xff); + g = std::min(g + fadepsg, 0xff); + r = std::min(r + fadepsr, 0xff); + break; } - set_pen_color(i, rgb_t(r, g, b)); - } -} - -/************************************************************************* - - set_palette_effect_max : Change Palette effect max bound (uses boogwing) - -*************************************************************************/ - -void deco_ace_device::set_palette_effect_max(uint32_t val) -{ - if (m_palette_effect_max != val) - { - m_palette_effect_max = val; - palette_update(); + set_pen_color(i, rgb_t(r, g, b)); // faded palettes } } |