summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/deco_ace.cpp
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2020-02-28 13:24:54 +0900
committer GitHub <noreply@github.com>2020-02-27 23:24:54 -0500
commitaefdb21281c7cf99e26f5db645e8ab9c2cedd674 (patch)
tree8f3df3ea710fe42342d89b0a6c1fbd0868e6feac /src/mame/video/deco_ace.cpp
parent0143128783c3ee835f258fcc7de58285b0dd32b7 (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.cpp51
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
}
}