From d2b962fbf9fffb58975dcad152fbfe562f28e7b2 Mon Sep 17 00:00:00 2001 From: angelosa Date: Mon, 13 Nov 2017 23:19:43 +0100 Subject: chqflag.cpp: fixed dimmed screen condition bug when soft resetting [Angelo Salese] --- src/mame/drivers/chqflag.cpp | 15 ++++++++++----- src/mame/includes/chqflag.h | 38 ++++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp index e5197879165..e756ef6eec1 100644 --- a/src/mame/drivers/chqflag.cpp +++ b/src/mame/drivers/chqflag.cpp @@ -57,6 +57,14 @@ WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w) /* other bits unknown/unused */ } +inline void chqflag_state::update_background_shadows(uint8_t data) +{ + double brt = (data & 0x80) ? PALETTE_DEFAULT_SHADOW_FACTOR : 1.0; + + for (int i = 512; i < 1024; i++) + m_palette->set_pen_contrast(i, brt); +} + WRITE8_MEMBER(chqflag_state::chqflag_vreg_w) { /* bits 0 & 1 = coin counters */ @@ -78,14 +86,10 @@ WRITE8_MEMBER(chqflag_state::chqflag_vreg_w) if ((data & 0x80) != m_last_vreg) { - double brt = (data & 0x80) ? PALETTE_DEFAULT_SHADOW_FACTOR : 1.0; - int i; - m_last_vreg = data & 0x80; /* only affect the background */ - for (i = 512; i < 1024; i++) - m_palette->set_pen_contrast(i, brt); + update_background_shadows(data); } //if ((data & 0xf8) && (data & 0xf8) != 0x88) @@ -286,6 +290,7 @@ void chqflag_state::machine_reset() m_analog_ctrl = 0; m_accel = 0; m_wheel = 0; + update_background_shadows(0); } static MACHINE_CONFIG_START( chqflag ) diff --git a/src/mame/includes/chqflag.h b/src/mame/includes/chqflag.h index e750ec0d29e..599b2d8ab75 100644 --- a/src/mame/includes/chqflag.h +++ b/src/mame/includes/chqflag.h @@ -30,6 +30,25 @@ public: m_soundlatch2(*this, "soundlatch2"), m_rombank(*this, "rombank") { } + DECLARE_READ8_MEMBER(k051316_1_ramrom_r); + DECLARE_READ8_MEMBER(k051316_2_ramrom_r); + DECLARE_WRITE8_MEMBER(chqflag_bankswitch_w); + DECLARE_WRITE8_MEMBER(chqflag_vreg_w); + DECLARE_WRITE8_MEMBER(select_analog_ctrl_w); + DECLARE_READ8_MEMBER(analog_read_r); + DECLARE_WRITE8_MEMBER(chqflag_sh_irqtrigger_w); + DECLARE_WRITE8_MEMBER(k007232_bankswitch_w); + DECLARE_WRITE8_MEMBER(k007232_extvolume_w); + DECLARE_WRITE8_MEMBER(volume_callback0); + DECLARE_WRITE8_MEMBER(volume_callback1); + K051316_CB_MEMBER(zoom_callback_1); + K051316_CB_MEMBER(zoom_callback_2); + K051960_CB_MEMBER(sprite_callback); + uint32_t screen_update_chqflag(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; +private: /* misc */ int m_k051316_readroms; int m_last_vreg; @@ -51,22 +70,5 @@ public: /* memory pointers */ required_memory_bank m_rombank; - - DECLARE_READ8_MEMBER(k051316_1_ramrom_r); - DECLARE_READ8_MEMBER(k051316_2_ramrom_r); - DECLARE_WRITE8_MEMBER(chqflag_bankswitch_w); - DECLARE_WRITE8_MEMBER(chqflag_vreg_w); - DECLARE_WRITE8_MEMBER(select_analog_ctrl_w); - DECLARE_READ8_MEMBER(analog_read_r); - DECLARE_WRITE8_MEMBER(chqflag_sh_irqtrigger_w); - DECLARE_WRITE8_MEMBER(k007232_bankswitch_w); - DECLARE_WRITE8_MEMBER(k007232_extvolume_w); - virtual void machine_start() override; - virtual void machine_reset() override; - uint32_t screen_update_chqflag(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE8_MEMBER(volume_callback0); - DECLARE_WRITE8_MEMBER(volume_callback1); - K051316_CB_MEMBER(zoom_callback_1); - K051316_CB_MEMBER(zoom_callback_2); - K051960_CB_MEMBER(sprite_callback); + void update_background_shadows(uint8_t data); }; -- cgit v1.2.3