summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/hh_tms1k.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/hh_tms1k.c')
-rw-r--r--src/mess/drivers/hh_tms1k.c381
1 files changed, 224 insertions, 157 deletions
diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c
index 219a0311129..c58cd7a1def 100644
--- a/src/mess/drivers/hh_tms1k.c
+++ b/src/mess/drivers/hh_tms1k.c
@@ -15,14 +15,17 @@
@MP0905B TMS0970 1977, Parker Brothers Codename Sector
*MP0168 TMS1000? 1979, Conic Basketball
@MP0914 TMS1000 1979, Entex Baseball 1
+ @MP0923 TMS1000 1979, Entex Baseball 2
@MP1030 TMS1100 1980, APF Mathemagician
+ *MP1133 TMS1470 1979, Kosmos Astro
@MP1204 TMS1100 1980, Entex Baseball 3
*MP1221 TMS1100 1980, Entex Raise The Devil
+ *MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
*MP2139 ? 1982, Gakken Galaxy Invader 1000
*MP2788 ? 1980, Bandai Flight Time
@MP3226 TMS1000 1978, Milton Bradley Simon
*MP3320A TMS1000 1979, Coleco Head to Head Basketball
- MP3403 TMS1100 1978, Marx Electronic Bowling
+ MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c
@MP3404 TMS1100 1978, Parker Brothers Merlin
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
@MP3438A TMS1100 1979, Kenner Star Wars Electronic Battle Command
@@ -32,25 +35,25 @@
MP3457 TMS1100 1979, MicroVision cartridge: Mindbuster
MP3474 TMS1100 1979, MicroVision cartridge: Vegas Slots
MP3475 TMS1100 1979, MicroVision cartridge: Bowling
+ @MP3476 TMS1100 1979, Milton Bradley Super Simon
MP3479 TMS1100 1980, MicroVision cartridge: Baseball
MP3481 TMS1100 1979, MicroVision cartridge: Connect Four
MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel
+ M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M34000, ..)
+ M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
+ M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
@MP6100A TMS0980 1979, Ideal Electronic Detective
@MP6101B TMS0980 1979, Parker Brothers Stop Thief
*MP6361 ? 1983, Defender Strikes
*MP7303 TMS1400? 19??, Tiger 7-in-1 Sports Stadium
@MP7313 TMS1400 1980, Parker Brothers Bank Shot
@MP7314 TMS1400 1980, Parker Brothers Split Second
- *MP7332 TMS1400 1981, Milton Bradley Dark Tower
+ MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c
@MP7334 TMS1400 1981, Coleco Total Control 4
inconsistent:
- M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders
- M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
- M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
-
- @CD7282SL TMS1100 1981, Tandy-12 (serial is similar to TI Speak & Spell series?)
+ @CD7282SL TMS1100 1981, Tandy/RadioShack Tandy-12 (serial is similar to TI Speak & Spell series?)
(* denotes not yet emulated by MESS, @ denotes it's in this driver)
@@ -67,21 +70,21 @@
***************************************************************************/
-#include "emu.h"
-#include "cpu/tms0980/tms0980.h"
-#include "sound/speaker.h"
+#include "includes/hh_tms1k.h"
// internal artwork
#include "amaztron.lh"
#include "bankshot.lh"
#include "cnsector.lh"
#include "ebball.lh"
+#include "ebball2.lh"
#include "ebball3.lh"
#include "elecdet.lh"
#include "comp4.lh"
#include "mathmagi.lh"
#include "merlin.lh" // clickable
#include "simon.lh" // clickable
+#include "ssimon.lh"
#include "splitsec.lh"
#include "starwbc.lh"
#include "stopthie.lh"
@@ -89,131 +92,13 @@
#include "tc4.lh"
-class hh_tms1k_state : public driver_device
-{
-public:
- hh_tms1k_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_inp_matrix(*this, "IN"),
- m_speaker(*this, "speaker"),
- m_display_wait(33),
- m_display_maxy(1),
- m_display_maxx(0)
- { }
-
- // devices
- required_device<cpu_device> m_maincpu;
- optional_ioport_array<7> m_inp_matrix; // max 7
- optional_device<speaker_sound_device> m_speaker;
-
- // misc common
- UINT16 m_r; // MCU R-pins data
- UINT16 m_o; // MCU O-pins data
- UINT16 m_inp_mux; // multiplexed inputs mask
- bool m_power_on;
-
- UINT8 read_inputs(int columns);
- DECLARE_INPUT_CHANGED_MEMBER(power_button);
- DECLARE_WRITE_LINE_MEMBER(auto_power_off);
-
- virtual void machine_start();
- virtual void machine_reset();
-
- // display common
- int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
- int m_display_maxy; // display matrix number of rows
- int m_display_maxx; // display matrix number of columns
-
- UINT32 m_display_state[0x20]; // display matrix rows data
- UINT16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
- UINT32 m_display_cache[0x20]; // (internal use)
- UINT8 m_display_decay[0x20][0x20]; // (internal use)
-
- TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
- void display_update();
- void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
-
- // game-specific handlers
- void mathmagi_display();
- DECLARE_WRITE16_MEMBER(mathmagi_write_r);
- DECLARE_WRITE16_MEMBER(mathmagi_write_o);
- DECLARE_READ8_MEMBER(mathmagi_read_k);
-
- void amaztron_display();
- DECLARE_WRITE16_MEMBER(amaztron_write_r);
- DECLARE_WRITE16_MEMBER(amaztron_write_o);
- DECLARE_READ8_MEMBER(amaztron_read_k);
-
- void tc4_display();
- DECLARE_WRITE16_MEMBER(tc4_write_r);
- DECLARE_WRITE16_MEMBER(tc4_write_o);
- DECLARE_READ8_MEMBER(tc4_read_k);
-
- void ebball_display();
- DECLARE_WRITE16_MEMBER(ebball_write_r);
- DECLARE_WRITE16_MEMBER(ebball_write_o);
- DECLARE_READ8_MEMBER(ebball_read_k);
-
- void ebball3_display();
- DECLARE_WRITE16_MEMBER(ebball3_write_r);
- DECLARE_WRITE16_MEMBER(ebball3_write_o);
- DECLARE_READ8_MEMBER(ebball3_read_k);
- void ebball3_set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(ebball3_difficulty_switch);
- DECLARE_MACHINE_RESET(ebball3);
-
- DECLARE_WRITE16_MEMBER(elecdet_write_r);
- DECLARE_WRITE16_MEMBER(elecdet_write_o);
- DECLARE_READ8_MEMBER(elecdet_read_k);
-
- void starwbc_display();
- DECLARE_WRITE16_MEMBER(starwbc_write_r);
- DECLARE_WRITE16_MEMBER(starwbc_write_o);
- DECLARE_READ8_MEMBER(starwbc_read_k);
-
- DECLARE_WRITE16_MEMBER(comp4_write_r);
- DECLARE_WRITE16_MEMBER(comp4_write_o);
- DECLARE_READ8_MEMBER(comp4_read_k);
-
- DECLARE_WRITE16_MEMBER(simon_write_r);
- DECLARE_WRITE16_MEMBER(simon_write_o);
- DECLARE_READ8_MEMBER(simon_read_k);
-
- DECLARE_WRITE16_MEMBER(cnsector_write_r);
- DECLARE_WRITE16_MEMBER(cnsector_write_o);
- DECLARE_READ8_MEMBER(cnsector_read_k);
-
- DECLARE_WRITE16_MEMBER(merlin_write_r);
- DECLARE_WRITE16_MEMBER(merlin_write_o);
- DECLARE_READ8_MEMBER(merlin_read_k);
-
- DECLARE_WRITE16_MEMBER(stopthief_write_r);
- DECLARE_WRITE16_MEMBER(stopthief_write_o);
- DECLARE_READ8_MEMBER(stopthief_read_k);
-
- DECLARE_WRITE16_MEMBER(bankshot_write_r);
- DECLARE_WRITE16_MEMBER(bankshot_write_o);
- DECLARE_READ8_MEMBER(bankshot_read_k);
-
- DECLARE_WRITE16_MEMBER(splitsec_write_r);
- DECLARE_WRITE16_MEMBER(splitsec_write_o);
- DECLARE_READ8_MEMBER(splitsec_read_k);
-
- void tandy12_display();
- DECLARE_WRITE16_MEMBER(tandy12_write_r);
- DECLARE_WRITE16_MEMBER(tandy12_write_o);
- DECLARE_READ8_MEMBER(tandy12_read_k);
-};
-
-
// machine_start/reset
void hh_tms1k_state::machine_start()
{
// zerofill
memset(m_display_state, 0, sizeof(m_display_state));
- memset(m_display_cache, 0, sizeof(m_display_cache));
+ memset(m_display_cache, ~0, sizeof(m_display_cache));
memset(m_display_decay, 0, sizeof(m_display_decay));
memset(m_display_segmask, 0, sizeof(m_display_segmask));
@@ -251,19 +136,6 @@ void hh_tms1k_state::machine_reset()
***************************************************************************/
-// LED segments
-enum
-{
- lA = 0x01,
- lB = 0x02,
- lC = 0x04,
- lD = 0x08,
- lE = 0x10,
- lF = 0x20,
- lG = 0x40,
- lDP = 0x80
-};
-
// The device may strobe the outputs very fast, it is unnoticeable to the user.
// To prevent flickering here, we need to simulate a decay.
@@ -296,7 +168,15 @@ void hh_tms1k_state::display_update()
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x < m_display_maxx; x++)
- output_set_lamp_value(y * mul + x, active_state[y] >> x & 1);
+ {
+ int state = active_state[y] >> x & 1;
+ output_set_lamp_value(y * mul + x, state);
+
+ // bit coords for svg2lay
+ char buf[10];
+ sprintf(buf, "%d.%d", y, x);
+ output_set_value(buf, state);
+ }
}
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
@@ -850,7 +730,7 @@ void hh_tms1k_state::ebball_display()
// R8 is a 7seg
m_display_segmask[8] = 0x7f;
- display_matrix(7, 9, ~m_o, m_r);
+ display_matrix(7, 9, m_o, m_r);
}
WRITE16_MEMBER(hh_tms1k_state::ebball_write_r)
@@ -870,7 +750,7 @@ WRITE16_MEMBER(hh_tms1k_state::ebball_write_o)
{
// O0-O6: led row
// O7: N/C
- m_o = data;
+ m_o = ~data;
ebball_display();
}
@@ -935,17 +815,125 @@ MACHINE_CONFIG_END
+/***************************************************************************
+
+ Entex Electronic Baseball 2
+ * boards are labeled: ZENY
+ * TMS1000 MCU, MP0923 (die labeled MP0923)
+
+ The Japanese version was published by Gakken, black casing instead of white.
+
+ The sequel to Entex Baseball, this version keeps up with score and innings.
+ As its predecessor, the pitcher controls are on a separate joypad.
+
+
+ lamp translation table: led zz from game PCB = MESS lampyx:
+
+ 00 = - 10 = lamp94 20 = lamp74 30 = lamp50
+ 01 = lamp53 11 = lamp93 21 = lamp75 31 = lamp51
+ 02 = lamp7 12 = lamp92 22 = lamp80 32 = lamp52
+ 03 = lamp17 13 = lamp62 23 = lamp81 33 = lamp40
+ 04 = lamp27 14 = lamp70 24 = lamp82 34 = lamp41
+ 05 = lamp97 15 = lamp71 25 = lamp83 35 = lamp31
+ 06 = lamp90 16 = lamp61 26 = lamp84 36 = lamp30
+ 07 = lamp95 17 = lamp72 27 = lamp85 37 = lamp33
+ 08 = lamp63 18 = lamp73 28 = lamp42 38 = lamp32
+ 09 = lamp91 19 = lamp60 29 = lamp43
+
+***************************************************************************/
+
+void hh_tms1k_state::ebball2_display()
+{
+ // the first 3 are 7segs
+ for (int y = 0; y < 3; y++)
+ m_display_segmask[y] = 0x7f;
+
+ display_matrix(8, 10, m_o, m_r);
+}
+
+WRITE16_MEMBER(hh_tms1k_state::ebball2_write_r)
+{
+ // R3-R6: input mux
+ m_inp_mux = data >> 3 & 0xf;
+
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0-R9: led columns
+ m_r = data ^ 0x7f;
+ ebball2_display();
+}
+
+WRITE16_MEMBER(hh_tms1k_state::ebball2_write_o)
+{
+ // O0-O7: led row/segment
+ m_o = ~data;
+ ebball2_display();
+}
+
+READ8_MEMBER(hh_tms1k_state::ebball2_read_k)
+{
+ return read_inputs(4);
+}
+
+
+static INPUT_PORTS_START( ebball2 )
+ PORT_START("IN.0") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x02, 0x02, "Pitcher" )
+ PORT_CONFSETTING( 0x02, "Auto" )
+ PORT_CONFSETTING( 0x00, "Manual" )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Fast Ball")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter")
+
+ PORT_START("IN.1") // R4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Steal")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up")
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // R5
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Slider")
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Knuckler")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Curve")
+ PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( ebball2, hh_tms1k_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1000, 350000) // RC osc. R=47K, C=47pf -> ~350kHz
+ MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball2_read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball2_write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball2_write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_ebball2)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
/***************************************************************************
Entex Electronic Baseball 3
- * boards are labeled: Zeny
+ * boards are labeled: ZENY
* TMS1100NLL 6007 MP1204 (die labeled MP1204)
* 2*SN75492N LED display driver
This is another improvement over Entex Baseball, where gameplay is a bit more
- varied, and it keeps up with score and innings. Like the others, the pitcher
- controls are on a separate joypad.
+ varied. Like the others, the pitcher controls are on a separate joypad.
lamp translation table: led zz from game PCB = MESS lampyx:
@@ -1413,12 +1401,13 @@ MACHINE_CONFIG_END
Milton Bradley Simon, created by Ralph Baer
Revision A hardware:
- * TMS1000 (die labeled MP3226), DS75494 lamp driver
+ * TMS1000 (die labeled MP3226)
+ * DS75494 lamp driver
Newer revisions (also Pocket Simon) have a smaller 16-pin MB4850 chip
instead of the TMS1000. This one has been decapped too, but we couldn't
find an internal ROM. It is possibly a cost-reduced custom ASIC specifically
- for Simon. The semi-sequel Super Simon uses a TMS1100.
+ for Simon. The semi-sequel Super Simon uses a TMS1100 (see next minidriver).
***************************************************************************/
@@ -1505,8 +1494,59 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Milton Bradley Super Simon
+ * TMS1100 MP3476NLL (die labeled MP3476)
+
+ x
+
+***************************************************************************/
+
+WRITE16_MEMBER(hh_tms1k_state::ssimon_write_r)
+{
+}
+
+WRITE16_MEMBER(hh_tms1k_state::ssimon_write_o)
+{
+ // N/C
+}
+
+READ8_MEMBER(hh_tms1k_state::ssimon_read_k)
+{
+ return 0;
+}
+
+
+static INPUT_PORTS_START( ssimon )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( ssimon, hh_tms1k_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1000, 350000) // x
+ MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ssimon_read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ssimon_write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ssimon_write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_ssimon)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Parker Brothers Code Name: Sector, by Bob Doyle
- * MP0905BNL ZA0379 (die labeled 0970F-05B)
+ * TMS0970 MCU, MP0905BNL ZA0379 (die labeled 0970F-05B)
This is a tabletop submarine pursuit game. A grid board and small toy
boats are used to remember your locations (a Paint app should be ok too).
@@ -1998,7 +2038,7 @@ MACHINE_CONFIG_END
/***************************************************************************
Tandy Radio Shack Computerized Arcade (1981, 1982, 1995)
- * TMS1100 CD7282SL
+ * TMS1100 MCU, labeled CD7282SL
This handheld contains 12 minigames. It looks and plays like "Fabulous Fred"
by the Japanese company Mego Corp. in 1980, which in turn is a mix of Merlin
@@ -2187,6 +2227,17 @@ ROM_START( ebball )
ROM_END
+ROM_START( ebball2 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0923", 0x0000, 0x0400, CRC(077acfe2) SHA1(a294ce7614b2cdb01c754a7a50d60d807e3f0939) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ebball2_mpla.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_ebball2_opla.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) )
+ROM_END
+
+
ROM_START( ebball3 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) )
@@ -2255,11 +2306,22 @@ ROM_START( simon )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1000_simon_mpla.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
- ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
ROM_LOAD( "tms1000_simon_opla.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
ROM_END
+ROM_START( ssimon )
+ ROM_REGION( 0x800, "maincpu", 0 )
+ ROM_LOAD( "mp3476", 0x0000, 0x800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 ) // unused
+ ROM_LOAD( "tms1100_ssimon_opla.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
+ROM_END
+
+
ROM_START( cnsector )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) )
@@ -2356,21 +2418,26 @@ CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Col
CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE )
CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", GAME_SUPPORTS_SAVE )
+CONS( 1979, ebball2, 0, 0, ebball2, ebball2, driver_device, 0, "Entex", "Electronic Baseball 2 (Entex)", GAME_SUPPORTS_SAVE )
CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3 (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) // unplayable without game cards
+CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) // ***
CONS( 1979, starwbc, 0, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", GAME_SUPPORTS_SAVE )
CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (prototype)", GAME_SUPPORTS_SAVE )
CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE )
+CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) // unplayable without writing board
+CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) // ***
CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", GAME_SUPPORTS_SAVE )
-CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", GAME_SUPPORTS_SAVE ) // unplayable without game board
+CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", GAME_SUPPORTS_SAVE ) // ***
CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (prototype)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE )
CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE )
-CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", GAME_SUPPORTS_SAVE ) // partially unplayable without cards/dice/..
+CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", GAME_SUPPORTS_SAVE ) // some of the minigames: ***
+
+// ***: As far as MESS is concerned, the game is emulated fine. But for it to be playable, it requires interaction
+// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.