From 858ec85f742d2d3fe656ed424a5eb2f934eef990 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 20 Aug 2014 16:13:58 +0000 Subject: [PATCH] Fixed chqflag save state problem (nw) --- src/mame/drivers/chqflag.c | 10 ++++++++++ src/mame/includes/chqflag.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/mame/drivers/chqflag.c b/src/mame/drivers/chqflag.c index 26fd032f298..4079fb4a6d2 100644 --- a/src/mame/drivers/chqflag.c +++ b/src/mame/drivers/chqflag.c @@ -33,6 +33,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(chqflag_state::chqflag_scanline) WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w) { + m_bank = data; //needed to restore the bankswitch post load + int bankaddress; UINT8 *RAM = memregion("maincpu")->base(); @@ -61,6 +63,11 @@ WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w) /* other bits unknown/unused */ } +void chqflag_state::bankswitch_restore() +{ + chqflag_bankswitch_w(m_maincpu->space(AS_PROGRAM), 0, m_bank); +} + WRITE8_MEMBER(chqflag_state::chqflag_vreg_w) { /* bits 0 & 1 = coin counters */ @@ -281,6 +288,8 @@ void chqflag_state::machine_start() save_item(NAME(m_analog_ctrl)); save_item(NAME(m_accel)); save_item(NAME(m_wheel)); + save_item(NAME(m_bank)); + machine().save().register_postload(save_prepost_delegate(FUNC(chqflag_state::bankswitch_restore), this)); } void chqflag_state::machine_reset() @@ -290,6 +299,7 @@ void chqflag_state::machine_reset() m_analog_ctrl = 0; m_accel = 0; m_wheel = 0; + m_bank = 0; } static MACHINE_CONFIG_START( chqflag, chqflag_state ) diff --git a/src/mame/includes/chqflag.h b/src/mame/includes/chqflag.h index 96589de6032..37a751e207a 100644 --- a/src/mame/includes/chqflag.h +++ b/src/mame/includes/chqflag.h @@ -37,6 +37,7 @@ public: int m_analog_ctrl; int m_accel; int m_wheel; + int m_bank; /* devices */ required_device m_maincpu; @@ -65,4 +66,5 @@ public: K051316_CB_MEMBER(zoom_callback_1); K051316_CB_MEMBER(zoom_callback_2); K051960_CB_MEMBER(sprite_callback); + void bankswitch_restore(); };