summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/sega/megadriv_rad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/sega/megadriv_rad.cpp')
-rw-r--r--src/mame/sega/megadriv_rad.cpp224
1 files changed, 210 insertions, 14 deletions
diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp
index 3a46189daff..8d48bab353a 100644
--- a/src/mame/sega/megadriv_rad.cpp
+++ b/src/mame/sega/megadriv_rad.cpp
@@ -36,21 +36,21 @@ public:
{ }
protected:
- uint16_t read(offs_t offset);
+ virtual uint16_t read(offs_t offset);
uint16_t read_a13(offs_t offset);
- void megadriv_radica_map(address_map &map);
+ virtual void megadriv_radica_map(address_map &map) ATTR_COLD;
- void radica_base_map(address_map &map);
+ void radica_base_map(address_map &map) ATTR_COLD;
int m_bank;
int m_romsize;
-private:
required_region_ptr<uint16_t> m_rom;
};
+
class megadriv_radica_state : public megadriv_radica_state_base
{
public:
@@ -65,8 +65,30 @@ public:
void megadriv_radica_6button_pal(machine_config &config);
protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
+ virtual void machine_start() override ATTR_COLD;
+ virtual void machine_reset() override ATTR_COLD;
+};
+
+class megadriv_b010xx_select_state : public megadriv_radica_state
+{
+public:
+ megadriv_b010xx_select_state(const machine_config& mconfig, device_type type, const char* tag) :
+ megadriv_radica_state(mconfig, type, tag)
+ { }
+ void init_atgame40();
+
+private:
+ virtual void machine_reset() override ATTR_COLD;
+
+ virtual uint16_t read(offs_t offset) override;
+
+ virtual void megadriv_radica_map(address_map &map) override ATTR_COLD;
+
+ void bank_high_w(offs_t offset, uint16_t data, uint16_t mem_mask);
+ void bank_low_w(offs_t offset, uint16_t data, uint16_t mem_mask);
+ void bank_upper_w(offs_t offset, uint16_t data, uint16_t mem_mask);
+
+ void b01036_w(offs_t offset, uint16_t data, uint16_t mem_mask);
};
@@ -82,7 +104,7 @@ public:
void init_dgunl3227();
protected:
- virtual void machine_start() override;
+ virtual void machine_start() override ATTR_COLD;
uint16_t m_a1630a = 0;
@@ -91,7 +113,7 @@ private:
uint16_t read_a16302(offs_t offset, uint16_t mem_mask);
virtual void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask);
- void megadriv_dgunl_map(address_map &map);
+ virtual void megadriv_radica_map(address_map &map) override ATTR_COLD;
};
@@ -107,7 +129,7 @@ public:
void init_ra145();
protected:
- virtual void machine_reset() override;
+ virtual void machine_reset() override ATTR_COLD;
private:
virtual void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask) override;
@@ -333,8 +355,55 @@ void megadriv_ra145_state::write_a1630a(offs_t offset, uint16_t data, uint16_t m
m_bank = m_bank / 0x10000;
}
+uint16_t megadriv_b010xx_select_state::read(offs_t offset)
+{
+ return m_rom[((m_bank >> 1) + offset) & (m_romsize - 1)];
+}
+
+void megadriv_b010xx_select_state::bank_high_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ data &= 0x7f;
+ mem_mask &= 0x7f;
+
+ m_bank = (m_bank & 0xff80ffff) | (data & mem_mask) << 16;
+ logerror("%s: bank_high_w bank is now %08x\n", machine().describe_context(), m_bank);
+}
-void megadriv_dgunl_state::megadriv_dgunl_map(address_map &map)
+void megadriv_b010xx_select_state::bank_low_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ m_bank = (m_bank & 0xffff0000) | (data & mem_mask);
+ logerror("%s: bank_low_w bank is now %08x\n", machine().describe_context(), m_bank);
+}
+
+void megadriv_b010xx_select_state::bank_upper_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ // this is handled differently to the other writes, probably some external logic
+ // rather than the same banking
+ // written before bank_high and bank_low
+ m_bank |= 0x800000;
+ logerror("%s: bank_upper_w (%04x %04x) bank is now %08x\n", machine().describe_context(), data, mem_mask, m_bank);
+}
+
+void megadriv_b010xx_select_state::b01036_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ // all games in atgame40 that fail to display anything write 0x0001 here
+ // could be coincidence, but could also be enabling the alt display mode?
+ logerror("%s: b01036_w %04x %04x (for games with no display?)\n", machine().describe_context(), data, mem_mask);
+}
+
+void megadriv_b010xx_select_state::megadriv_radica_map(address_map &map)
+{
+ radica_base_map(map);
+
+ map(0xa10104, 0xa10105).w(FUNC(megadriv_b010xx_select_state::bank_upper_w)); // read and written
+
+ map(0xb01028, 0xb01029).w(FUNC(megadriv_b010xx_select_state::bank_low_w));
+ map(0xb0102a, 0xb0102b).w(FUNC(megadriv_b010xx_select_state::bank_high_w));
+
+ map(0xb01036, 0xb01037).w(FUNC(megadriv_b010xx_select_state::b01036_w));
+}
+
+void megadriv_dgunl_state::megadriv_radica_map(address_map &map)
{
radica_base_map(map);
@@ -458,6 +527,11 @@ void megadriv_radica_state::machine_reset()
megadriv_radica_state_base::machine_reset();
}
+void megadriv_b010xx_select_state::machine_reset()
+{
+ m_bank = 0;
+ megadriv_radica_state_base::machine_reset();
+}
void megadriv_radica_state::megadriv_radica_3button_ntsc(machine_config &config)
{
@@ -502,7 +576,7 @@ void megadriv_dgunl_state::megadriv_dgunl_ntsc(machine_config &config)
ctrl1_3button(config);
ctrl2_3button(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_dgunl_state::megadriv_dgunl_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_dgunl_state::megadriv_radica_map);
}
void megadriv_ra145_state::megadriv_ra145_ntsc(machine_config &config)
@@ -524,6 +598,11 @@ ROM_START( rad_sf2uk )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_streetfighter2_uk.bin", 0x000000, 0x400000, CRC(868afb44) SHA1(f4339e36272c18b1d49aa4095127ed18e0961df6) )
ROM_END
+ROM_START( mdtvp3j )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "playtv_vol3.bin", 0x000000, 0x400000, CRC(d2daf376) SHA1(147b88d7aff834146c649077b43312c71b973298) )
+ROM_END
+
ROM_START( rad_gen1 )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol1_blue_usa.bin", 0x000000, 0x400000, CRC(3b4c8438) SHA1(5ed9c053f9ebc8d4bf571d57e562cf347585d158) )
@@ -539,6 +618,11 @@ ROM_START( rad_md1uk )
ROM_LOAD16_WORD_SWAP( "radicauk.u2", 0x000000, 0x400000, CRC(03a6734b) SHA1(255048d46b593bc975b3a6c44e8b8e35917511c7) )
ROM_END
+ROM_START( mdtvp1j )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "l08y6_i_32m.u2", 0x000000, 0x400000, CRC(740a8859) SHA1(cf1212ef28e75e2cea752cf10a06ea715a30ae07) ) // 04-07-23 date sticker (23 July 2004)
+ROM_END
+
ROM_START( rad_gen2 )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_genesis_vol2_red_usa.bin", 0x000000, 0x400000, CRC(7c1a0f0e) SHA1(a6441f75a4cd48f1563aeafdfbdde00202d4067c) )
@@ -549,6 +633,11 @@ ROM_START( rad_md2uk )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol2_red_uk.bin", 0x000000, 0x400000, CRC(b68fd025) SHA1(b8f9c505653d6dd2b62840f078f828360faf8abc) )
ROM_END
+ROM_START( mdtvp2j )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "playtv_vol2.bin", 0x000000, 0x400000, CRC(4d887d12) SHA1(b7f70abd12c3a3c68d1ad127a1475b704e898f51) )
+ROM_END
+
ROM_START( rad_ssoc )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD( "radica_sensiblesoccer_uk.bin", 0x000000, 0x400000, CRC(b8745ab3) SHA1(0ab3f26e5ffd288e5a3a5db676951b9095299eb0) ) // should be byteswapped?
@@ -571,6 +660,12 @@ ROM_START( rad_orun )
ROM_LOAD16_WORD_SWAP( "outrun.bin", 0x000000, 0x100000, CRC(4fd6d653) SHA1(57f0e4550ff883e4bb7857caef2c893c21f80b42) )
ROM_END
+ROM_START( rad_mncr )
+ ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF )
+ // radica_menacer_byteswapped.bin = mpr-15075-f.u1 megadriv:menacer Menacer 6-Game Cartridge (Europe, USA)
+ ROM_LOAD16_WORD_SWAP( "radica_menacer.bin", 0x000000, 0x100000, CRC(5f9ef4a4) SHA1(f28350e7325cb7469d760d97ee452a9d846eb3d4) )
+ROM_END
+
ROM_START( msi_sf2 )
ROM_REGION( 0x400000, "maincpu", 0 )
// The first part of the ROM seems to be a boot ROM for the enhanced MD clone menus, even if it does nothing here
@@ -585,9 +680,77 @@ ROM_START( dgunl3227 )
// populated in init function
ROM_REGION( 0x400000, "rom", 0 )
+ ROM_LOAD16_WORD_SWAP( "pacmantc58fvm5t2a.bin", 0x000000, 0x400000, CRC(b09fa599) SHA1(3cc50bee7ef91608848fb34185a0723d2b82b46f) )
+ROM_END
+
+ROM_START( dgunl3227a )
+ ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
+ // populated in init function
+
+ ROM_REGION( 0x400000, "rom", 0 )
ROM_LOAD16_WORD_SWAP( "myarcadepacman_s99jl032hbt1_9991227e_as_s29jl032h55tai01.bin", 0x000000, 0x400000, CRC(ecead966) SHA1(971e8da6eb720f670f4148c7e07922e4f24eb609) )
ROM_END
+ROM_START( matet )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tetrismyarcade_s29gl032n90tfi04_0001227e.bin", 0x000000, 0x400000, CRC(09b5af89) SHA1(85e506923fd803f05cc8f579f37331b608fea744) )
+ ROM_IGNORE(0x100)
+ROM_END
+
+/*
+
+As the atgame40 is not running on standard MegaDrive hardware quite a few of these games rely
+on an unsupported video mode (they still play sounds and resond to inputs / do colour fades)
+
+00 Menu located at 00800000 WORKS
+--
+01 Air Hockey located at 0000c800 WORKS
+02 Black Sheep located at 0002935a BOOTS - NO DISPLAY
+03 Bomber located at 000b6f5a WORKS
+04 Bottle Taps Race located at 000d6f5a WORKS
+05 Brain Switch located at 000ec760 BOOTS - NO DISPLAY
+06 Bulls and Cows located at 00800000 BOOTS - NO DISPLAY
+07 Cannon located at 0013e360 WORKS
+08 Checker located at 0016301e WORKS
+09 Chess located at 001aa232 WORKS
+10 Colour Puzzle located at 001f0a32 BOOTS - NO DISPLAY
+11 Cross The Road located at 008a2800 BOOTS - NO DISPLAY
+12 Curling 2010 located at 00953486 BOOTS - NO DISPLAY
+13 Fight or Lose located at 009f002e WORKS
+14 Fire Fly Glow located at 00a09ede BOOTS - NO DISPLAY
+15 Fish Story located at 00aa2ede BOOTS - NO DISPLAY
+16 Flash Memory located at 00285632 BOOTS - NO DISPLAY
+17 Formula Challenge located at 00310232 BOOTS - NO DISPLAY
+18 Hexagons located at 00394a32 WORKS
+19 Jacks Pea located at 003b4a32 BOOTS - NO DISPLAY
+20 Jewel Magic located at 00b4a874 BOOTS - NO DISPLAY
+21 Logic Dial located at 0040b4ac BOOTS - NO DISPLAY
+22 Table Magic located at 00be8f8c BOOTS - NO DISPLAY
+23 Mahjong located at 0049e8ac WORKS
+24 Match Eleven located at 004ae8ac BOOTS - NO DISPLAY
+25 Mega Brain Switch located at 005390ac BOOTS - NO DISPLAY
+26 Memory located at 0058a0ac WORKS
+27 Memory Match located at 00c8538c BOOTS - NO DISPLAY
+28 Mirror Mirror located at 00d2178c BOOTS - NO DISPLAY
+29 Mr Balls located at 0059a0ac WORKS
+30 Navel Power located at 005c0a08 WORKS
+31 Panic Lift located at 00d86f8c BOOTS - NO DISPLAY
+32 Reaction Match located at 00e2038c BOOTS - NO DISPLAY
+33 Snake located at 005dbbd4 WORKS
+34 Space Hunter located at 005ebbd4 BOOTS - NO DISPLAY
+35 Spider located at 006817d4 WORKS
+36 Sudoku Quiz located at 0069efb4 BOOTS - NO DISPLAY
+37 Treasure Hunt located at 00eb9b8c BOOTS - NO DISPLAY
+38 UFO Sighting located at 00f5938c BOOTS - NO DISPLAY
+39 Warehouse Keeper located at 00730fb4 WORKS
+40 Whack a Wolf located at 00740fb4 BOOTS - NO DISPLAY
+*/
+
+ROM_START( atgame40 )
+ ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "40bonusgamesin1.bin", 0x800000, 0x800000, CRC(4eba6e83) SHA1(b8edf1b6ecb70a136b551f1454ba8afa45bd8bc1) )
+ ROM_CONTINUE(0x000000, 0x800000)
+ROM_END
ROM_START( ra145 )
@@ -612,7 +775,16 @@ ROM_START( ra145 )
ROM_LOAD16_WORD_SWAP( "ra145.bin", 0x000000, 0x8000000, BAD_DUMP CRC(30583950) SHA1(855eae232e3830a505f9bc1a26edb3a7d15ce4d1) )
ROM_END
+ROM_START( banmrid )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "b75909a.u10", 0x000000, 0x400000, CRC(b439e06e) SHA1(3a87fc16186b7042dd92c7cf68c4284cd86f9175) )
+ROM_END
+void megadriv_b010xx_select_state::init_atgame40()
+{
+ m_romsize = 0x1000000;
+ init_megadrie();
+}
void megadriv_dgunl_state::init_dgunl3227()
{
@@ -704,15 +876,16 @@ void megadriv_ra145_state::init_ra145()
// US versions show 'Genesis' on the menu, show a www.radicagames.com splash screen, and use NTSC versions of the ROMs, sometimes region locked
// EU versions show 'Mega Drive' on the menu, show a www.radicagames.com splash screen, and use PAL versions of the ROMs, sometimes region locked
// UK versions show "Mega Drive' on the menu, show a www.radicauk.com splash screen, and use PAL versions of the ROMs, sometimes region locked
-// Japanese releases have been seen for at least one of these Radica collections (SF2), those presumably have a different ROM too (NTSC, locked to Japan?)
CONS( 2004, rad_gen1, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Genesis Collection Volume 1 (Radica, Arcade Legends) (USA)", 0)
CONS( 2004, rad_md1, rad_gen1, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Mega Drive Collection Volume 1 (Radica, Arcade Legends) (Europe)", 0)
CONS( 2004, rad_md1uk, rad_gen1, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Mega Drive Collection Volume 1 (Radica, Arcade Legends) (UK)", 0)
+CONS( 2004, mdtvp1j, rad_gen1, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Sega Toys", "Mega Drive Play TV 1 (Japan)", 0) // expects US region despite being a Japanese unit (Bean Machine is region locked)
CONS( 2004, rad_gen2, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Genesis Collection Volume 2 (Radica, Arcade Legends) (USA)", 0)
CONS( 2004, rad_md2uk, rad_gen2, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Mega Drive Collection Volume 2 (Radica, Arcade Legends) (UK)", 0)
// is there a Europe version with Radica Games boot screen and Mega Drive text?
+CONS( 2004, mdtvp2j, rad_gen2, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Sega Toys", "Mega Drive Play TV 2 (Japan)", 0)
// box calls this Volume 3
CONS( 2004, rad_sonic, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Super Sonic Gold (Radica Plug & Play) (USA)", 0)
@@ -722,6 +895,7 @@ CONS( 2004, rad_sonicuk,rad_sonic,0, megadriv_radica_3button_pal, radica_3butto
CONS( 2004, rad_sf2, 0, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadriv, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (USA)", 0)
CONS( 2004, rad_sf2uk, rad_sf2, 0, megadriv_radica_6button_pal, radica_6button, megadriv_radica_state, init_megadrie, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (UK)", 0)
// is there a Europe version with Radica Games boot screen and Mega Drive text?
+CONS( 2004, mdtvp3j, rad_sf2, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadriv, "Sega Toys", "Mega Drive Play TV 3 (Japan)", 0) // This one does contain the Japanese ROM for SF2 (but the World release of GnG) so SF2 runs in Japanese, but GnG runs in English
// still branded as Arcade Legends even if none of these were ever arcade games, European exclusive
CONS( 2004, rad_ssoc, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "Radica / Sensible Software / Sega", "Sensible Soccer plus [Cannon Fodder, Mega lo Mania] (Radica, Arcade Legends) (UK)", 0)
@@ -730,6 +904,12 @@ CONS( 2004, rad_ssoc, 0, 0, megadriv_radica_3button_pal, radica_3button
// not region locked, no Radica logos, uncertain if other regions would differ
CONS( 2004, rad_orun, 0, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Out Run 2019 (Radica Plug & Play, UK)", 0)
+// this has been verified as identical to the 6-in-1 cartridge that came with the Menacer gun for the MD
+CONS( 2004, rad_mncr, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Menacer (Radica Plug & Play)", MACHINE_NOT_WORKING )
+
+// 仮面ライダー龍騎 サバイバルファイト
+CONS( 2002, banmrid, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Bandai", "Kamen Rider Ryuki: Survival Fight (Japan)", MACHINE_NOT_WORKING )
+
// From a European unit but NTSC? - code is hacked from original USA Genesis game with region check still intact? (does the clone hardware always identify as such? or does the bypassed boot code skip the check?)
// TODO: move out of here eventually once the enhanced MD part is emulated rather than bypassed (it's probably the same as the 145-in-1 multigame unit, but modified to only include this single game)
CONS( 2018, msi_sf2, 0, 0, megadriv_radica_6button_ntsc, msi_6button, megadriv_radica_state, init_megadriv, "MSI / Capcom / Sega", "Street Fighter II: Special Champion Edition (MSI Plug & Play) (Europe)", 0)
@@ -742,7 +922,23 @@ CONS( 2018, msi_sf2, 0, 0, megadriv_radica_6button_ntsc, msi_6button,
// It is also confirmed from real hardware videos that these units do not have the usual sprite limits (so masking effect on Sonic title screen fails)
// this is the only 'Pocket Player' unit to use Genesis on a Chip tech, the others are NES on a chip.
-// some versions of this unit have an additional "Add Credits with 'A' or 'B'" screen after you select Pac-Man, this version does not.
-CONS( 2018, dgunl3227, 0, 0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227)", 0 )
+// the parent set has updated software explaining how to insert coins in Pac-Man as well as an updated copyright string
+CONS( 2018, dgunl3227, 0, 0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227)", 0 )
+CONS( 2018, dgunl3227a, dgunl3227,0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227, older)", 0 )
+
CONS( 2018, ra145, 0, 0, megadriv_ra145_ntsc, msi_6button, megadriv_ra145_state, init_ra145, "<unknown>", "Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs)", MACHINE_NOT_WORKING )
+
+
+// Games below have a device at b0102x which appears to either be able to select ROM base on a byte boundary
+// OR maybe are running from RAM instead of ROM (with an auto-copy at the start?) with that being a DMA operation.
+
+// Technically this is a MD type cartridge, but it doesn't seem to be designed for use with a standard MD as it contains
+// nothing but the 16Mbyte ROM and a 5v to 3.3v converter yet the code clearly requires some extensive banking logic.
+// Testing it on a real MD shows nothing, not even the menu.
+//
+// We don't seem to emulate the system it's designed for, so for now just treat it as its own thing (which may become
+// the basis of a driver for that console)
+CONS( 2012, atgame40, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_b010xx_select_state, init_atgame40, "AtGames", "40 Bonus Games in 1 (AtGames)", MACHINE_NOT_WORKING)
+
+CONS( 2021, matet, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_b010xx_select_state, init_megadriv, "dreamGEAR", "My Arcade Tetris (DGUNL-7028, Pocket Player Pro)", MACHINE_NOT_WORKING)