From c2f698a95f80512d8fd461bdabf3868cb8edc0c4 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 27 Dec 2020 04:18:53 +1100 Subject: Fixed crash of dcat16 at start --- src/mame/drivers/megadriv.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp index 5dba169f489..ae434fc0ded 100644 --- a/src/mame/drivers/megadriv.cpp +++ b/src/mame/drivers/megadriv.cpp @@ -297,12 +297,15 @@ void md_cons_state::machine_start() void md_cons_state::install_cartslot() { - // for now m_cartslot is only in MD and not 32x and SegaCD - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x7fffff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x000000, 0x7fffff, write16s_delegate(*m_cart, FUNC(base_md_cart_slot_device::write))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a13)), write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a13))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a15)), write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a15))); -// m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_tmss_bank))); + if (m_cart) + { + // for now m_cartslot is only in MD and not 32x and SegaCD + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x7fffff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x000000, 0x7fffff, write16s_delegate(*m_cart, FUNC(base_md_cart_slot_device::write))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a13)), write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a13))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a15)), write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a15))); +// m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16sm_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_tmss_bank))); + } } uint16_t md_cons_state::tmss_r(offs_t offset) @@ -342,7 +345,7 @@ void md_cons_slot_state::machine_start() md_cons_state::machine_start(); // the SVP introduces some kind of DMA 'lag', which we have to compensate for, this is obvious even on gfx DMAd from ROM (the Speedometer) - if (m_cart->get_type() == SEGA_SVP) + if (m_cart && (m_cart->get_type() == SEGA_SVP)) m_vdp->set_dma_delay(2); if (m_tmss) -- cgit v1.2.3