summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2020-12-27 04:18:53 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2020-12-27 04:18:53 +1100
commitc2f698a95f80512d8fd461bdabf3868cb8edc0c4 (patch)
tree1b987d0a493971197476802f0aaed01195e4b650
parentfb911eb6bef57fed904571a63a82e93f9aca0acf (diff)
Fixed crash of dcat16 at start
-rw-r--r--src/mame/drivers/megadriv.cpp17
1 files 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)