summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/megadriv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/megadriv.cpp')
-rw-r--r--src/mame/drivers/megadriv.cpp148
1 files changed, 51 insertions, 97 deletions
diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp
index 57f4ba7e7bb..0547592b4bc 100644
--- a/src/mame/drivers/megadriv.cpp
+++ b/src/mame/drivers/megadriv.cpp
@@ -268,7 +268,7 @@ INPUT_PORTS_END
*
*************************************/
-MACHINE_START_MEMBER(md_cons_state, md_common)
+void md_cons_state::machine_start()
{
static const char *const pad6names[2][4] = {
{ "PAD1_6B", "PAD2_6B", "UNUSED", "UNUSED" },
@@ -336,9 +336,10 @@ void md_cons_state::install_tmss()
}
-MACHINE_START_MEMBER(md_cons_state, ms_megadriv)
+
+void md_cons_slot_state::machine_start()
{
- MACHINE_START_CALL_MEMBER( md_common );
+ 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)
@@ -352,28 +353,26 @@ MACHINE_START_MEMBER(md_cons_state, ms_megadriv)
{
install_cartslot();
}
+}
+void md_cons_state::machine_reset()
+{
+ md_base_state::machine_reset();
+ // if the system has a 32x, pause the extra CPUs until they are actually turned on
+ if (m_32x)
+ m_32x->pause_cpu();
}
-MACHINE_START_MEMBER(md_cons_state, ms_megacd)
+void md_cons_cd_state::machine_start()
{
- MACHINE_START_CALL_MEMBER( md_common );
+ md_cons_state::machine_start();
// the segaCD introduces some kind of DMA 'lag', which we have to compensate for,
// at least when reading wordram? we might need to check what mode we're in the DMA...
m_vdp->set_dma_delay(2);
}
-MACHINE_RESET_MEMBER(md_cons_state, ms_megadriv)
-{
- MACHINE_RESET_CALL_MEMBER( megadriv );
-
- // if the system has a 32x, pause the extra CPUs until they are actually turned on
- if (m_32x)
- m_32x->pause_cpu();
-}
-
// same as screen_eof_megadriv but with addition of 32x and SegaCD/MegaCD pieces
WRITE_LINE_MEMBER(md_cons_state::screen_vblank_console)
{
@@ -398,46 +397,37 @@ WRITE_LINE_MEMBER(md_cons_state::screen_vblank_console)
}
}
-void md_cons_state::ms_megadriv(machine_config &config)
+void md_cons_slot_state::ms_megadriv(machine_config &config)
{
md_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
MD_CART_SLOT(config, m_cart, md_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
}
-void md_cons_state::ms_megadpal(machine_config &config)
+void md_cons_slot_state::ms_megadpal(machine_config &config)
{
md_pal(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
MD_CART_SLOT(config, m_cart, md_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
}
-void md_cons_state::ms_megadriv2(machine_config &config)
+void md_cons_slot_state::ms_megadriv2(machine_config &config)
{
md2_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
MD_CART_SLOT(config, m_cart, md_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("megadriv");
}
-void md_cons_state::genesis_tmss(machine_config &config)
+void md_cons_slot_state::genesis_tmss(machine_config &config)
{
ms_megadriv(config);
subdevice<software_list_device>("cart_list")->set_filter("TMSS");
@@ -447,9 +437,6 @@ void md_cons_state::dcat16_megadriv(machine_config &config)
{
dcat16_megadriv_base(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
// has SD card slot instead?
@@ -647,9 +634,6 @@ void md_cons_state::genesis_32x(machine_config &config)
{
md_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback));
@@ -682,9 +666,6 @@ void md_cons_state::mdj_32x(machine_config &config)
{
md_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback));
@@ -717,9 +698,6 @@ void md_cons_state::md_32x(machine_config &config)
{
md_pal(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback));
@@ -780,13 +758,10 @@ ROM_END
/****************************************** SegaCD emulation ****************************************/
-void md_cons_state::genesis_scd(machine_config &config)
+void md_cons_cd_state::genesis_scd(machine_config &config)
{
md_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_US(config, m_segacd, 0);
@@ -801,13 +776,10 @@ void md_cons_state::genesis_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("segacd");
}
-void md_cons_state::genesis2_scd(machine_config &config)
+void md_cons_cd_state::genesis2_scd(machine_config &config)
{
md2_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_US(config, m_segacd, 0);
@@ -822,13 +794,10 @@ void md_cons_state::genesis2_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("segacd");
}
-void md_cons_state::md_scd(machine_config &config)
+void md_cons_cd_state::md_scd(machine_config &config)
{
md_pal(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_EUROPE(config, m_segacd, 0);
@@ -843,13 +812,10 @@ void md_cons_state::md_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("megacd");
}
-void md_cons_state::md2_scd(machine_config &config)
+void md_cons_cd_state::md2_scd(machine_config &config)
{
md2_pal(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_EUROPE(config, m_segacd, 0);
@@ -864,13 +830,10 @@ void md_cons_state::md2_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("megacd");
}
-void md_cons_state::mdj_scd(machine_config &config)
+void md_cons_cd_state::mdj_scd(machine_config &config)
{
md_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_JAPAN(config, m_segacd, 0);
@@ -885,13 +848,10 @@ void md_cons_state::mdj_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("megacdj");
}
-void md_cons_state::md2j_scd(machine_config &config)
+void md_cons_cd_state::md2j_scd(machine_config &config)
{
md2_ntsc(config);
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
- MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
-
subdevice<screen_device>("megadriv")->screen_vblank().set(FUNC(md_cons_state::screen_vblank_console));
SEGA_SEGACD_JAPAN(config, m_segacd, 0);
@@ -908,7 +868,7 @@ void md_cons_state::md2j_scd(machine_config &config)
/******************SEGA CD + 32X****************************/
-void md_cons_state::genesis_32x_scd(machine_config &config)
+void md_cons_cd_state::genesis_32x_scd(machine_config &config)
{
genesis_32x(config);
@@ -921,8 +881,6 @@ void md_cons_state::genesis_32x_scd(machine_config &config)
CDROM(config, "cdrom").set_interface("scd_cdrom");
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
-
config.device_remove("cartslot");
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart));
@@ -930,7 +888,7 @@ void md_cons_state::genesis_32x_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("segacd");
}
-void md_cons_state::md_32x_scd(machine_config &config)
+void md_cons_cd_state::md_32x_scd(machine_config &config)
{
md_32x(config);
@@ -943,8 +901,6 @@ void md_cons_state::md_32x_scd(machine_config &config)
CDROM(config, "cdrom").set_interface("scd_cdrom");
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
-
config.device_remove("cartslot");
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart));
@@ -952,7 +908,7 @@ void md_cons_state::md_32x_scd(machine_config &config)
SOFTWARE_LIST(config, "cd_list").set_original("megacd");
}
-void md_cons_state::mdj_32x_scd(machine_config &config)
+void md_cons_cd_state::mdj_32x_scd(machine_config &config)
{
mdj_32x(config);
@@ -965,8 +921,6 @@ void md_cons_state::mdj_32x_scd(machine_config &config)
CDROM(config, "cdrom").set_interface("scd_cdrom");
- MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
-
config.device_remove("cartslot");
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart));
@@ -1186,12 +1140,12 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-CONS( 1989, genesis, 0, 0, ms_megadriv, md, md_cons_state, init_genesis, "Sega", "Genesis (USA, NTSC)", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, megadriv, genesis, 0, ms_megadpal, md, md_cons_state, init_md_eur, "Sega", "Mega Drive (Europe, PAL)", MACHINE_SUPPORTS_SAVE )
-CONS( 1988, megadrij, genesis, 0, ms_megadriv, md, md_cons_state, init_md_jpn, "Sega", "Mega Drive (Japan, NTSC)", MACHINE_SUPPORTS_SAVE )
+CONS( 1989, genesis, 0, 0, ms_megadriv, md, md_cons_slot_state, init_genesis, "Sega", "Genesis (USA, NTSC)", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, megadriv, genesis, 0, ms_megadpal, md, md_cons_slot_state, init_md_eur, "Sega", "Mega Drive (Europe, PAL)", MACHINE_SUPPORTS_SAVE )
+CONS( 1988, megadrij, genesis, 0, ms_megadriv, md, md_cons_slot_state, init_md_jpn, "Sega", "Mega Drive (Japan, NTSC)", MACHINE_SUPPORTS_SAVE )
// 1990+ models had the TMSS security chip, leave this as a clone, it reduces compatibility and nothing more.
-CONS( 1990, genesis_tmss, genesis, 0, genesis_tmss, md, md_cons_state, init_genesis, "Sega", "Genesis (USA, NTSC, with TMSS chip)", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, genesis_tmss, genesis, 0, genesis_tmss, md, md_cons_slot_state, init_genesis, "Sega", "Genesis (USA, NTSC, with TMSS chip)", MACHINE_SUPPORTS_SAVE )
// the 32X plugged in the cart slot, games plugged into the 32x. Maybe it should be handled as an expansion device?
CONS( 1994, 32x, 0, 0, genesis_32x, md, md_cons_state, init_genesis, "Sega", "Genesis with 32X (USA, NTSC)", MACHINE_NOT_WORKING )
@@ -1199,32 +1153,32 @@ CONS( 1994, 32xe, 32x, 0, md_32x, md, md_cons_s
CONS( 1994, 32xj, 32x, 0, mdj_32x, md, md_cons_state, init_md_jpn, "Sega", "Mega Drive with 32X (Japan, NTSC)", MACHINE_NOT_WORKING )
// the SegaCD plugged into the expansion port..
-CONS( 1992, segacd, 0, 0, genesis_scd, md, md_cons_state, init_genesis, "Sega", "Sega CD (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, megacd, segacd, 0, md_scd, md, md_cons_state, init_md_eur, "Sega", "Mega-CD (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 1991, megacdj, segacd, 0, mdj_scd, md, md_cons_state, init_md_jpn, "Sega", "Mega-CD (Japan, NTSC)", MACHINE_NOT_WORKING ) // this bios doesn't work with our ram interleave needed by a few games?!
-CONS( 1991, megacda, segacd, 0, md_scd, md, md_cons_state, init_md_eur, "Sega", "Mega-CD (Asia, PAL)", MACHINE_NOT_WORKING )
-CONS( 1993, segacd2, 0, 0, genesis_scd, md, md_cons_state, init_genesis, "Sega", "Sega CD 2 (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, megacd2, segacd2, 0, md_scd, md, md_cons_state, init_md_eur, "Sega", "Mega-CD 2 (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 1993, megacd2j, segacd2, 0, mdj_scd, md, md_cons_state, init_md_jpn, "Sega", "Mega-CD 2 (Japan, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1994, aiwamcd, segacd2, 0, mdj_scd, md, md_cons_state, init_md_jpn, "AIWA", "Mega-CD CSD-G1M (Japan, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, laseract, 0, 0, genesis_scd, md, md_cons_state, init_genesis, "Pioneer","LaserActive (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, laseractj, laseract, 0, mdj_scd, md, md_cons_state, init_md_jpn, "Pioneer","LaserActive (Japan, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, xeye, 0, 0, genesis2_scd, md, md_cons_state, init_genesis, "JVC", "X'eye (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1992, wmega, xeye, 0, mdj_scd, md, md_cons_state, init_md_jpn, "Sega", "Wondermega (Japan, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1993, wmegam2, xeye, 0, md2j_scd, md, md_cons_state, init_md_jpn, "Victor", "Wondermega M2 (Japan, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1994, cdx, 0, 0, genesis2_scd, md, md_cons_state, init_genesis, "Sega", "CDX (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1994, multmega, cdx, 0, md2_scd, md, md_cons_state, init_md_eur, "Sega", "Multi-Mega (Europe, PAL)", MACHINE_NOT_WORKING )
+CONS( 1992, segacd, 0, 0, genesis_scd, md, md_cons_cd_state, init_genesis, "Sega", "Sega CD (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, megacd, segacd, 0, md_scd, md, md_cons_cd_state, init_md_eur, "Sega", "Mega-CD (Europe, PAL)", MACHINE_NOT_WORKING )
+CONS( 1991, megacdj, segacd, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "Sega", "Mega-CD (Japan, NTSC)", MACHINE_NOT_WORKING ) // this bios doesn't work with our ram interleave needed by a few games?!
+CONS( 1991, megacda, segacd, 0, md_scd, md, md_cons_cd_state, init_md_eur, "Sega", "Mega-CD (Asia, PAL)", MACHINE_NOT_WORKING )
+CONS( 1993, segacd2, 0, 0, genesis_scd, md, md_cons_cd_state, init_genesis, "Sega", "Sega CD 2 (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, megacd2, segacd2, 0, md_scd, md, md_cons_cd_state, init_md_eur, "Sega", "Mega-CD 2 (Europe, PAL)", MACHINE_NOT_WORKING )
+CONS( 1993, megacd2j, segacd2, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "Sega", "Mega-CD 2 (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1994, aiwamcd, segacd2, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "AIWA", "Mega-CD CSD-G1M (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, laseract, 0, 0, genesis_scd, md, md_cons_cd_state, init_genesis, "Pioneer","LaserActive (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, laseractj, laseract, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "Pioneer","LaserActive (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, xeye, 0, 0, genesis2_scd, md, md_cons_cd_state, init_genesis, "JVC", "X'eye (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1992, wmega, xeye, 0, mdj_scd, md, md_cons_cd_state, init_md_jpn, "Sega", "Wondermega (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1993, wmegam2, xeye, 0, md2j_scd, md, md_cons_cd_state, init_md_jpn, "Victor", "Wondermega M2 (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1994, cdx, 0, 0, genesis2_scd, md, md_cons_cd_state, init_genesis, "Sega", "CDX (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1994, multmega, cdx, 0, md2_scd, md, md_cons_cd_state, init_md_eur, "Sega", "Multi-Mega (Europe, PAL)", MACHINE_NOT_WORKING )
//32X plugged in the cart slot + SegaCD plugged into the expansion port..
-CONS( 1994, 32x_scd, 0, 0, genesis_32x_scd, md, md_cons_state, init_genesis, "Sega", "Sega CD with 32X (USA, NTSC)", MACHINE_NOT_WORKING )
-CONS( 1995, 32x_mcd, 32x_scd, 0, md_32x_scd, md, md_cons_state, init_md_eur, "Sega", "Mega-CD with 32X (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 1994, 32x_mcdj, 32x_scd, 0, mdj_32x_scd, md, md_cons_state, init_md_jpn, "Sega", "Mega-CD with 32X (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1994, 32x_scd, 0, 0, genesis_32x_scd, md, md_cons_cd_state, init_genesis, "Sega", "Sega CD with 32X (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1995, 32x_mcd, 32x_scd, 0, md_32x_scd, md, md_cons_cd_state, init_md_eur, "Sega", "Mega-CD with 32X (Europe, PAL)", MACHINE_NOT_WORKING )
+CONS( 1994, 32x_mcdj, 32x_scd, 0, mdj_32x_scd, md, md_cons_cd_state, init_md_jpn, "Sega", "Mega-CD with 32X (Japan, NTSC)", MACHINE_NOT_WORKING )
// handheld hardware
-CONS( 1995, gen_nomd, 0, 0, ms_megadriv2, gen_nomd, md_cons_state, init_genesis, "Sega", "Genesis Nomad (USA Genesis handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, gen_nomd, 0, 0, ms_megadriv2, gen_nomd, md_cons_slot_state, init_genesis, "Sega", "Genesis Nomad (USA Genesis handheld)", MACHINE_SUPPORTS_SAVE )
// handheld without LCD
-CONS( 1993, megajet, gen_nomd, 0, ms_megadriv2, megajet, md_cons_state, init_md_jpn, "Sega", "Mega Jet (Japan Mega Drive handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1993, megajet, gen_nomd, 0, ms_megadriv2, megajet, md_cons_slot_state, init_md_jpn, "Sega", "Mega Jet (Japan Mega Drive handheld)", MACHINE_SUPPORTS_SAVE )
/* clone hardware - not sure if this hardware is running some kind of emulator, or enhanced MD clone, or just custom banking */
-CONS( 200?, dcat16, 0, 0, dcat16_megadriv, md, md_cons_state, init_genesis, "Firecore", "D-CAT16 (Mega Drive handheld)", MACHINE_NOT_WORKING )
+CONS( 200?, dcat16, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "Firecore", "D-CAT16 (Mega Drive handheld)", MACHINE_NOT_WORKING )