diff options
Diffstat (limited to 'src/mame/drivers/megadriv.cpp')
-rw-r--r-- | src/mame/drivers/megadriv.cpp | 148 |
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 ) |