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 */