From 2d3aede494c244ddce682af61d90e74a1dc56319 Mon Sep 17 00:00:00 2001 From: Robert Date: Sat, 20 Dec 2014 11:28:57 +1100 Subject: (MESS) fixed crash with no cart for 3 drivers (nw) - gameking, svision, advision - only affects my build - See forum post for details --- src/mess/drivers/gameking.c | 6 +++++- src/mess/drivers/svision.c | 10 +++++++--- src/mess/machine/advision.c | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/mess/drivers/gameking.c b/src/mess/drivers/gameking.c index 60b6960f3c8..205d857eb83 100644 --- a/src/mess/drivers/gameking.c +++ b/src/mess/drivers/gameking.c @@ -121,7 +121,11 @@ void gameking_state::machine_start() astring region_tag; m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); - if (!m_cart_rom) printf("No Rom\n"); + if (!m_cart_rom) + { + printf("No Rom\n"); + return; + } m_bank4000 = membank("bank4000"); m_bank8000 = membank("bank8000"); diff --git a/src/mess/drivers/svision.c b/src/mess/drivers/svision.c index f92f5b7cc0b..c90ec362418 100644 --- a/src/mess/drivers/svision.c +++ b/src/mess/drivers/svision.c @@ -475,9 +475,13 @@ void svision_state::machine_start() m_bank1 = membank("bank1"); m_bank2 = membank("bank2"); // bank1 is set to the first bank - m_bank1->set_base(m_cart_rom->base()); - // bank2 is set to the last bank - m_bank2->set_base(m_cart_rom->base() + (num_banks - 1) * 0x4000); + // do not crash if no cart + if (num_banks) + { + m_bank1->set_base(m_cart_rom->base()); + // bank2 is set to the last bank + m_bank2->set_base(m_cart_rom->base() + (num_banks - 1) * 0x4000); + } } void svision_state::machine_reset() diff --git a/src/mess/machine/advision.c b/src/mess/machine/advision.c index 72e515ad68a..045d5620c2a 100644 --- a/src/mess/machine/advision.c +++ b/src/mess/machine/advision.c @@ -76,7 +76,8 @@ WRITE8_MEMBER( advision_state::bankswitch_w ) m_rambank = (data & 0x03) << 8; m_maincpu->set_input_line(MCS48_INPUT_EA, m_ea_bank ? ASSERT_LINE : CLEAR_LINE); - m_bank1->set_entry(m_ea_bank); + if (m_cart_rom) + m_bank1->set_entry(m_ea_bank); } /* External RAM */ -- cgit v1.2.3