chqflag.cpp: fixed dimmed screen condition bug when soft resetting [Angelo Salese]

This commit is contained in:
angelosa 2017-11-13 23:19:43 +01:00
parent a37b95a7ce
commit d2b962fbf9
2 changed files with 30 additions and 23 deletions

View File

@ -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 )

View File

@ -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);
};