diff options
author | Fabio Priuli <etabeta78@users.noreply.github.com> | 2013-03-28 08:11:37 +0000 |
---|---|---|
committer | Fabio Priuli <etabeta78@users.noreply.github.com> | 2013-03-28 08:11:37 +0000 |
commit | c3141323c128e072db0b53e2822a2f91c193a566 (patch) | |
tree | 7e2d5a4745600138548d102d5bd9dbb68d7599c5 /src | |
parent | 626f45e2fc555cd7d49a3bc8b67cd9ee0146df85 (diff) |
(MESS) megadriv.c: fixed input-related crash in 32x and segacd, due to latest refactorizations. nw.
Diffstat (limited to 'src')
-rw-r--r-- | src/mess/drivers/megadriv.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c index 7e4bfe43fdd..bc8c7f62e6b 100644 --- a/src/mess/drivers/megadriv.c +++ b/src/mess/drivers/megadriv.c @@ -38,7 +38,8 @@ public: READ8_MEMBER(mess_md_io_read_data_port); WRITE16_MEMBER(mess_md_io_write_data_port); - DECLARE_MACHINE_START( ms_megadriv ); + DECLARE_MACHINE_START( md_common ); // setup ioport_port + DECLARE_MACHINE_START( ms_megadriv ); // setup ioport_port + install cartslot handlers DECLARE_MACHINE_RESET( ms_megadriv ); }; @@ -320,7 +321,7 @@ UINT16 vdp_get_word_from_68k_mem_console(running_machine &machine, UINT32 source } } -MACHINE_START_MEMBER(md_cons_state,ms_megadriv ) +MACHINE_START_MEMBER(md_cons_state, md_common) { static const char *const pad6names[2][4] = { { "PAD1_6B", "PAD2_6B", "UNUSED", "UNUSED" }, @@ -340,9 +341,15 @@ MACHINE_START_MEMBER(md_cons_state,ms_megadriv ) // setup timers for 6 button pads for (int i = 0; i < 3; i++) m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(FPTR)i); +} +MACHINE_START_MEMBER(md_cons_state, ms_megadriv) +{ + MACHINE_START_CALL_MEMBER( md_common ); + vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_console; + // for now m_cartslot is only in MD and not 32x and SegaCD machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_slotcart)); machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_slotcart)); machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_slotcart)); @@ -543,6 +550,9 @@ DEVICE_IMAGE_LOAD_MEMBER( md_base_state, _32x_cart ) static MACHINE_CONFIG_START( genesis_32x, md_cons_state ) MCFG_FRAGMENT_ADD( md_ntsc ) + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0) // we need to remove and re-add the sound system because the balance is different @@ -574,6 +584,9 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( mdj_32x, md_cons_state ) MCFG_FRAGMENT_ADD( md_ntsc ) + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0) // we need to remove and re-add the sound system because the balance is different @@ -605,6 +618,9 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( md_32x, md_cons_state ) MCFG_FRAGMENT_ADD( md_pal ) + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, 0) // we need to remove and re-add the sound system because the balance is different @@ -674,6 +690,10 @@ struct cdrom_interface scd_cdrom = static MACHINE_CONFIG_START( genesis_scd, md_cons_state ) MCFG_FRAGMENT_ADD( md_ntsc ) + + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) @@ -682,6 +702,10 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( md_scd, md_cons_state ) MCFG_FRAGMENT_ADD( md_pal ) + + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) @@ -691,6 +715,10 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( mdj_scd, md_cons_state ) MCFG_FRAGMENT_ADD( md_ntsc ) + + MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common ) + MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) + MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) |