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.c660
1 files changed, 570 insertions, 90 deletions
diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c
index 95544ed7bc8..d0eaa7b6ced 100644
--- a/src/mess/drivers/hh_tms1k.c
+++ b/src/mess/drivers/hh_tms1k.c
@@ -19,8 +19,8 @@
@MP1030 TMS1100 1980, APF Mathemagician
@MP1133 TMS1470 1979, Kosmos Astro
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
- *MP1218 TMS1100 1980, Entex Basketball 2 (6010)
@MP1211 TMS1100 1980, Entex Space Invader
+ @MP1218 TMS1100 1980, Entex Basketball 2 (6010)
@MP1221 TMS1100 1980, Entex Raise The Devil
*MP1296 TMS1100? 1982, Entex Black Knight
*MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
@@ -28,7 +28,7 @@
*MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000 (? note: VFD-capable)
@MP2105 TMS1370 1979, Gakken Poker
*MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000
- *MP2726 TMS1040 1979, Tomy Break Up
+ @MP2726 TMS1040 1979, Tomy Break Up
*MP2788 TMS1040? 1980, Bandai Flight Time (? note: VFD-capable)
*MP3208 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750A or B)
@MP3226 TMS1000 1978, Milton Bradley Simon (model 4850)
@@ -66,7 +66,7 @@
MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c
@MP7334 TMS1400 1981, Coleco Total Control 4
@MP7351 TMS1400CR 1982, Parker Brothers Master Merlin
- *MP7551 TMS1670 1980, Entex Color Football 4 (6009)
+ @MP7551 TMS1670 1980, Entex Color Football 4 (6009)
*MP7573 TMS1670? 1981, Entex Select-a-Game cartridge: Football 4 (? note: 40-pin, VFD-capable)
inconsistent:
@@ -91,6 +91,7 @@
***************************************************************************/
#include "includes/hh_tms1k.h"
+#include "machine/tms1024.h"
#include "sound/beep.h"
// internal artwork
@@ -103,7 +104,6 @@
#include "ebball.lh"
#include "ebball2.lh"
#include "ebball3.lh"
-#include "einvader.lh" // test-layout(but still playable)
#include "elecdet.lh"
#include "gjackpot.lh"
#include "gpoker.lh"
@@ -118,8 +118,11 @@
#include "starwbc.lh"
#include "stopthie.lh"
#include "tandy12.lh" // clickable
+//#include "tbreakup.lh"
#include "tc4.lh"
+#include "einvader.lh" // test-layout(but still playable)
+
#include "hh_tms1k_test.lh" // common test-layout - use external artwork
@@ -944,8 +947,8 @@ public:
void tc4_state::prepare_display()
{
// R5,R7-R9 are 7segs
- for (int y = 0; y < 10; y++)
- if (y >= 5 && y <= 9 && y != 6)
+ for (int y = 5; y < 10; y++)
+ if (y != 6)
m_display_segmask[y] = 0x7f;
// update current state (note: R6 as extra column!)
@@ -1054,7 +1057,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Entex Electronic Baseball (1)
+ Entex (Electronic) Baseball (1)
* TMS1000NLP MP0914 (die labeled MP0914A)
* 1 7seg LED, and other LEDs behind bezel, 1bit sound
@@ -1140,9 +1143,9 @@ static INPUT_PORTS_START( ebball )
PORT_START("IN.0") // R1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Change Sides")
- PORT_CONFNAME( 0x04, 0x04, "Pitcher" )
- PORT_CONFSETTING( 0x04, "Auto" )
- PORT_CONFSETTING( 0x00, "Manual" )
+ PORT_CONFNAME( 0x04, 0x04, "Players" )
+ PORT_CONFSETTING( 0x04, "1" ) // Auto
+ PORT_CONFSETTING( 0x00, "2" ) // Manual
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // R2
@@ -1191,7 +1194,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Entex Electronic Baseball 2
+ Entex (Electronic) Baseball 2
* PCBs are labeled: ZENY
* TMS1000 MCU, MP0923 (die labeled MP0923)
* 3 7seg LEDs, and other LEDs behind bezel, 1bit sound
@@ -1272,9 +1275,9 @@ READ8_MEMBER(ebball2_state::read_k)
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_CONFNAME( 0x02, 0x02, "Players" )
+ PORT_CONFSETTING( 0x02, "1" ) // Auto
+ PORT_CONFSETTING( 0x00, "2" ) // 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")
@@ -1318,7 +1321,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Entex Electronic Baseball 3
+ Entex (Electronic) Baseball 3
* PCBs are labeled: ZENY
* TMS1100NLL 6007 MP1204 (rev. E!) (die labeled MP1204)
* 2*SN75492N LED display driver
@@ -1361,7 +1364,7 @@ public:
DECLARE_READ8_MEMBER(read_k);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
protected:
virtual void machine_reset();
@@ -1444,19 +1447,19 @@ static INPUT_PORTS_START( ebball3 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Steal Defense")
PORT_START("IN.2") // R2
- PORT_CONFNAME( 0x01, 0x01, "Pitcher" )
- PORT_CONFSETTING( 0x01, "Auto" )
- PORT_CONFSETTING( 0x00, "Manual" )
+ PORT_CONFNAME( 0x01, 0x01, "Players" )
+ PORT_CONFSETTING( 0x01, "1" ) // Auto
+ PORT_CONFSETTING( 0x00, "2" ) // Manual
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Bunt")
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // fake
- PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, ebball3_state, difficulty_switch, NULL)
+ PORT_CONFNAME( 0x01, 0x00, "Skill Level" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ebball3_state, skill_switch, NULL)
PORT_CONFSETTING( 0x00, "Amateur" )
PORT_CONFSETTING( 0x01, "Professional" )
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(ebball3_state::difficulty_switch)
+INPUT_CHANGED_MEMBER(ebball3_state::skill_switch)
{
set_clock();
}
@@ -1525,7 +1528,7 @@ public:
DECLARE_WRITE16_MEMBER(write_o);
void set_clock();
- DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
protected:
virtual void machine_reset();
@@ -1567,12 +1570,12 @@ static INPUT_PORTS_START( einvader )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
- PORT_CONFNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, einvader_state, difficulty_switch, NULL)
+ PORT_CONFNAME( 0x08, 0x00, "Skill Level" ) PORT_CHANGED_MEMBER(DEVICE_SELF, einvader_state, skill_switch, NULL)
PORT_CONFSETTING( 0x00, "Amateur" )
PORT_CONFSETTING( 0x08, "Professional" )
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(einvader_state::difficulty_switch)
+INPUT_CHANGED_MEMBER(einvader_state::skill_switch)
{
set_clock();
}
@@ -1617,6 +1620,240 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Entex Color Football 4
+ * TMS1670 6009 MP7551 (die also labeled MP7551)
+ * * 9-digit cyan VFD display, 60 red and green LEDs behind bezel, 1bit sound
+
+***************************************************************************/
+
+class efootb4_state : public hh_tms1k_state
+{
+public:
+ efootb4_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+void efootb4_state::prepare_display()
+{
+ // R10-R15 are 7segs
+ for (int y = 10; y < 16; y++)
+ m_display_segmask[y] = 0x7f;
+
+ display_matrix(7, 16, m_o, m_r);
+}
+
+WRITE16_MEMBER(efootb4_state::write_r)
+{
+ // R0-R4: input mux
+ m_inp_mux = data & 0x1f;
+
+ // R0-R9: led select
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(efootb4_state::write_o)
+{
+ // O7: speaker out
+ m_speaker->level_w(data >> 7 & 1);
+
+ // O0-O6: led state
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(efootb4_state::read_k)
+{
+ return read_inputs(5);
+}
+
+
+// config
+
+static INPUT_PORTS_START( efootb4 )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Run")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pass")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Kick")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Run")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Pass")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Kick")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // R4
+ PORT_CONFNAME( 0x01, 0x01, "Players" )
+ PORT_CONFSETTING( 0x01, "1" ) // Auto
+ PORT_CONFSETTING( 0x00, "2" ) // Manual
+ PORT_CONFNAME( 0x02, 0x00, "Skill Level" )
+ PORT_CONFSETTING( 0x00, "Amateur" )
+ PORT_CONFSETTING( 0x02, "Professional" )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Status")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( efootb4, efootb4_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1670, 475000) // approximation - RC osc. R=42K, C=47pf, but unknown RC curve
+ MCFG_TMS1XXX_READ_K_CB(READ8(efootb4_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(efootb4_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(efootb4_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+// MCFG_DEFAULT_LAYOUT(layout_efootb4)
+ MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
+
+ /* 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) Basketball 2
+ * TMS1100 6010 MP1218 (die also labeled MP1218)
+ * 4 7seg LEDs, and other LEDs behind bezel, 1bit sound
+
+***************************************************************************/
+
+class ebaskb2_state : public hh_tms1k_state
+{
+public:
+ ebaskb2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+void ebaskb2_state::prepare_display()
+{
+ // R0-R3 are 7segs
+ for (int y = 0; y < 4; y++)
+ m_display_segmask[y] = 0x7f;
+
+ display_matrix(7, 10, m_o, m_r);
+}
+
+WRITE16_MEMBER(ebaskb2_state::write_r)
+{
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R6-R9: input mux
+ m_inp_mux = data >> 6 & 0xf;
+
+ // R0-R9: led select
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(ebaskb2_state::write_o)
+{
+ // O0-O6: led state
+ // O7: N/C
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(ebaskb2_state::read_k)
+{
+ return read_inputs(4);
+}
+
+
+// config
+
+static INPUT_PORTS_START( ebaskb2 )
+ PORT_START("IN.0") // R6
+ PORT_CONFNAME( 0x01, 0x01, "Skill Level" )
+ PORT_CONFSETTING( 0x01, "Amateur" )
+ PORT_CONFSETTING( 0x00, "Professional" )
+ PORT_CONFNAME( 0x02, 0x02, "Players" )
+ PORT_CONFSETTING( 0x02, "1" ) // Auto
+ PORT_CONFSETTING( 0x00, "2" ) // Manual
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Shoot")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pass")
+
+ PORT_START("IN.1") // R7
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Pass")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Shoot")
+
+ PORT_START("IN.2") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
+
+ PORT_START("IN.3") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( ebaskb2, ebaskb2_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, 360000) // RC osc. R=33K, C=82pf -> ~360kHz
+ MCFG_TMS1XXX_READ_K_CB(READ8(ebaskb2_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ebaskb2_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ebaskb2_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+// MCFG_DEFAULT_LAYOUT(layout_ebaskb2)
+ MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
+
+ /* 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 Raise The Devil
* TMS1100 MP1221 (die labeled MP1221)
* 4 7seg LEDs(rightmost one unused), and other LEDs behind bezel, 1bit sound
@@ -3756,6 +3993,212 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tomy(tronics) Break Up (manufactured in Japan)
+ * PCB label TOMY B.O.
+ * TMS1040 MP2726 TOMY WIPE (die labeled MP2726A)
+ * TMS1025N2LL I/O expander
+ * 2-digit 7seg display, 46 other leds, 1bit sound
+
+ known releases:
+ - USA: Break Up
+ - Japan: Block Attack
+ - UK: Break-In
+
+ lamp translation table: led zz from game PCB = MESS lampyx:
+
+ 00 = - 10 = lamp25 20 = lamp44
+ 01 = lamp27 11 = lamp35 21 = lamp53
+ 02 = lamp37 12 = lamp45 22 = lamp42
+ 03 = lamp47 13 = lamp55
+ 04 = lamp57 14 = lamp54
+ 05 = lamp26 15 = lamp33
+ 06 = lamp36 16 = lamp43
+ 07 = lamp46 17 = lamp23
+ 08 = lamp56 18 = lamp34
+ 09 = lamp24 19 = lamp32
+
+ the 7seg panel is lamp0x and lamp1x(aka digit0/1), and the
+ 8(2*4) * 3 rectangular leds panel, where x=0,1,2,3:
+
+ lamp7x lamp6x
+ lamp9x lamp8x
+ lamp11x lamp10x
+
+***************************************************************************/
+
+class tbreakup_state : public hh_tms1k_state
+{
+public:
+ tbreakup_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
+ m_expander(*this, "expander")
+ { }
+
+ required_device<tms1024_device> m_expander;
+ UINT8 m_exp_port[7];
+ DECLARE_WRITE8_MEMBER(expander_w);
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+
+ void set_clock();
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
+
+protected:
+ virtual void machine_reset();
+ virtual void machine_start();
+};
+
+// handlers
+
+void tbreakup_state::prepare_display()
+{
+ // 7seg leds from R0,R1 and O0-O6
+ for (int y = 0; y < 2; y++)
+ {
+ m_display_segmask[y] = 0x7f;
+ m_display_state[y] = (m_r >> y & 1) ? (m_o & 0x7f) : 0;
+ }
+
+ // 22 round leds from expander port 7 and O2-O7
+ for (int y = 0; y < 4; y++)
+ m_display_state[y+2] = (m_exp_port[6] >> y & 1) ? (m_o & 0xfc) : 0;
+
+ // 24 rectangular leds from expander ports 1-6 (not strobed)
+ for (int y = 0; y < 6; y++)
+ m_display_state[y+6] = m_exp_port[y];
+
+ set_display_size(8, 12);
+ display_update();
+}
+
+WRITE8_MEMBER(tbreakup_state::expander_w)
+{
+ // TMS1025 port 1-7 data
+ m_exp_port[offset] = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(tbreakup_state::write_r)
+{
+ // R6: speaker out
+ m_speaker->level_w(data >> 6 & 1);
+
+ // R7,R8: input mux
+ m_inp_mux = data >> 7 & 3;
+
+ // R3-R5: TMS1025 port S
+ // R2: TMS1025 STD pin
+ m_expander->write_s(space, 0, data >> 3 & 7);
+ m_expander->write_std(data >> 2 & 1);
+
+ // R0,R1: select digit
+ m_r = ~data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(tbreakup_state::write_o)
+{
+ // O0-O3: TMS1025 port H
+ m_expander->write_h(space, 0, data & 0xf);
+
+ // O0-O7: led state
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(tbreakup_state::read_k)
+{
+ // K4: fixed input
+ // K8: multiplexed inputs
+ return (m_inp_matrix[2]->read() & 4) | (read_inputs(2) & 8);
+}
+
+
+// config
+
+static INPUT_PORTS_START( tbreakup )
+ PORT_START("IN.0") // R7 K8
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Ball")
+
+ PORT_START("IN.1") // R8 K8
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Hit")
+
+ PORT_START("IN.2") // K4
+ PORT_CONFNAME( 0x04, 0x00, DEF_STR( Lives ) )
+ PORT_CONFSETTING( 0x00, "3" )
+ PORT_CONFSETTING( 0x04, "5" )
+
+ PORT_START("IN.3") // fake
+ PORT_CONFNAME( 0x01, 0x00, "Skill Level" ) PORT_CHANGED_MEMBER(DEVICE_SELF, tbreakup_state, skill_switch, NULL)
+ PORT_CONFSETTING( 0x00, "Pro 1" )
+ PORT_CONFSETTING( 0x01, "Pro 2" )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(tbreakup_state::skill_switch)
+{
+ set_clock();
+}
+
+
+void tbreakup_state::set_clock()
+{
+ // MCU clock is from an analog circuit with resistor of 73K, PRO2 adds 100K
+ m_maincpu->set_unscaled_clock((m_inp_matrix[3]->read() & 1) ? 400000 : 350000);
+}
+
+void tbreakup_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
+void tbreakup_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+
+ // zerofill/register for savestates
+ memset(m_exp_port, 0, sizeof(m_exp_port));
+ save_item(NAME(m_exp_port));
+}
+
+static MACHINE_CONFIG_START( tbreakup, tbreakup_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1040, 400000) // see set_clock
+ MCFG_TMS1XXX_READ_K_CB(READ8(tbreakup_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tbreakup_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tbreakup_state, write_o))
+
+ MCFG_DEVICE_ADD("expander", TMS1025, 0)
+ MCFG_TMS1024_WRITE_PORT_CB(1, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(2, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(3, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(4, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(5, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(6, WRITE8(tbreakup_state, expander_w))
+ MCFG_TMS1024_WRITE_PORT_CB(7, WRITE8(tbreakup_state, expander_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+// MCFG_DEFAULT_LAYOUT(layout_tbreakup)
+ MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
+
+ /* 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
+
+
+
+
+
+/***************************************************************************
+
Game driver(s)
***************************************************************************/
@@ -3765,9 +4208,9 @@ ROM_START( mathmagi )
ROM_LOAD( "mp1030", 0x0000, 0x800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_mathmagi_opla.pla", 0, 365, NO_DUMP )
+ ROM_LOAD( "tms1100_mathmagi_output.pla", 0, 365, NO_DUMP )
ROM_END
@@ -3776,9 +4219,9 @@ ROM_START( amaztron )
ROM_LOAD( "mp3405", 0x0000, 0x0800, CRC(9cbc0009) SHA1(17772681271b59280687492f37fa0859998f041d) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_amaztron_mpla.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_amaztron_opla.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) )
+ ROM_LOAD( "tms1100_amaztron_output.pla", 0, 365, CRC(f3875384) SHA1(3c256a3db4f0aa9d93cf78124db39f4cbdc57e4a) )
ROM_END
@@ -3787,9 +4230,9 @@ ROM_START( h2hbaseb )
ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_h2hbaseb_opla.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
+ ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
ROM_END
@@ -3798,9 +4241,9 @@ ROM_START( h2hfootb )
ROM_LOAD( "mp3460.u3", 0x0000, 0x0800, CRC(3a4e53a8) SHA1(5052e706f992c6c4bada1fa7769589eec3df6471) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_h2hfootb_opla.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) )
+ ROM_LOAD( "tms1100_h2hfootb_output.pla", 0, 365, CRC(c8d85873) SHA1(16bd6fc8e3cd16d5f8fd32d0c74e67de77f5487e) )
ROM_END
@@ -3809,9 +4252,9 @@ ROM_START( tc4 )
ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_tc4_opla.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) )
+ ROM_LOAD( "tms1400_tc4_output.pla", 0, 557, CRC(3b908725) SHA1(f83bf5faa5b3cb51f87adc1639b00d6f9a71ad19) )
ROM_END
@@ -3820,9 +4263,9 @@ ROM_START( ebball )
ROM_LOAD( "mp0914", 0x0000, 0x0400, CRC(3c6fb05b) SHA1(b2fe4b3ca72d6b4c9bfa84d67f64afdc215e7178) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_ebball_mpla.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_ebball_opla.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) )
+ ROM_LOAD( "tms1000_ebball_output.pla", 0, 365, CRC(062bf5bb) SHA1(8d73ee35444299595961225528b153e3a5fe66bf) )
ROM_END
@@ -3831,9 +4274,9 @@ ROM_START( ebball2 )
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_LOAD( "tms1000_common2_micro.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_LOAD( "tms1000_ebball2_output.pla", 0, 365, CRC(adcd73d1) SHA1(d69e590d288ef99293d86716498f3971528e30de) )
ROM_END
@@ -3842,9 +4285,9 @@ ROM_START( ebball3 )
ROM_LOAD( "6007_mp1204", 0x0000, 0x0800, CRC(987a29ba) SHA1(9481ae244152187d85349d1a08e439e798182938) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_ebball3_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_ebball3_opla.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
+ ROM_LOAD( "tms1100_ebball3_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
ROM_END
@@ -3853,9 +4296,31 @@ ROM_START( einvader )
ROM_LOAD( "mp1211", 0x0000, 0x0800, CRC(b6efbe8e) SHA1(d7d54921dab22bb0c2956c896a5d5b56b6f64969) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_einvader_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_einvader_output.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) )
+ROM_END
+
+
+ROM_START( efootb4 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "6009_mp7551", 0x0000, 0x1000, CRC(54fa7244) SHA1(4d16bd825c4a2db76ca8a263c373ade15c20e270) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1400_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_efootb4_output.pla", 0, 557, CRC(5c87c753) SHA1(bde9d4aa1e57a718affd969475c0a1edcf60f444) )
+ROM_END
+
+
+ROM_START( ebaskb2 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "6010_mp1218", 0x0000, 0x0800, CRC(0089ede8) SHA1(c8a79d5aca7e37b637a4d152150acba9f41aad96) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_einvader_opla.pla", 0, 365, CRC(490158e1) SHA1(61cace1eb09244663de98d8fb04d9459b19668fd) )
+ ROM_LOAD( "tms1100_ebaskb2_output.pla", 0, 365, CRC(c18103ae) SHA1(5a9bb8e1d95a9f6919b05ff9471fa0a8014b8b81) )
ROM_END
@@ -3864,9 +4329,9 @@ ROM_START( raisedvl )
ROM_LOAD( "mp1221", 0x0000, 0x0800, CRC(782791cc) SHA1(214249406fcaf44efc6350022bd534e59ec69c88) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_raisedvl_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_raisedvl_opla.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
+ ROM_LOAD( "tms1100_raisedvl_output.pla", 0, 365, CRC(00db663b) SHA1(6eae12503364cfb1f863df0e57970d3e766ec165) )
ROM_END
@@ -3875,9 +4340,9 @@ ROM_START( gpoker )
ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_gpoker_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_gpoker_opla.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) )
+ ROM_LOAD( "tms1100_gpoker_output.pla", 0, 365, CRC(f7e2d812) SHA1(cc3abd89afb1d2145dc47636553ccd0ba7de70d9) )
ROM_END
@@ -3886,9 +4351,9 @@ ROM_START( gjackpot )
ROM_LOAD( "mpf553", 0x0000, 0x1000, CRC(f45fd008) SHA1(8d5d6407a8a031a833ceedfb931f5c9d2725ecd0) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1400_gjackpot_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1400_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_gjackpot_opla.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) )
+ ROM_LOAD( "tms1400_gjackpot_output.pla", 0, 557, CRC(50e471a7) SHA1(9d862cb9f51a563882b62662c5bfe61b52e3df00) )
ROM_END
@@ -3897,13 +4362,13 @@ ROM_START( elecdet )
ROM_LOAD( "mp6100a", 0x0000, 0x1000, CRC(6f396bb8) SHA1(1f104d4ca9bee0d4572be4779b7551dfe20c4f04) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_default_mpla.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_elecdet_opla.pla", 0, 352, CRC(652d19c3) SHA1(75550c2b293453b6b9efed88c8cc77195a53161f) )
+ ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(652d19c3) SHA1(75550c2b293453b6b9efed88c8cc77195a53161f) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_elecdet_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -3912,9 +4377,9 @@ ROM_START( starwbc )
ROM_LOAD( "mp3438a", 0x0000, 0x0800, CRC(c12b7069) SHA1(d1f39c69a543c128023ba11cc6228bacdfab04de) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_starwbc_mpla.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_starwbc_opla.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
+ ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
ROM_END
ROM_START( starwbcp )
@@ -3922,9 +4387,9 @@ ROM_START( starwbcp )
ROM_LOAD( "us4270755", 0x0000, 0x0800, BAD_DUMP CRC(fb3332f2) SHA1(a79ac81e239983cd699b7cfcc55f89b203b2c9ec) ) // from patent US4270755, may have errors
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_starwbc_mpla.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_starwbc_opla.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
+ ROM_LOAD( "tms1100_starwbc_output.pla", 0, 365, CRC(d358a76d) SHA1(06b60b207540e9b726439141acadea9aba718013) )
ROM_END
@@ -3933,9 +4398,9 @@ ROM_START( astro )
ROM_LOAD( "mp1133", 0x0000, 0x1000, CRC(bc21109c) SHA1(05a433cce587d5c0c2d28b5fda5f0853ea6726bf) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1400_astro_mpla.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_LOAD( "tms1400_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_astro_opla.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) )
+ ROM_LOAD( "tms1400_astro_output.pla", 0, 557, CRC(eb08957e) SHA1(62ae0d13a1eaafb34f1b27d7df51441b400ccd56) )
ROM_END
@@ -3944,13 +4409,13 @@ ROM_START( comp4 )
ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) )
ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_default_ipla.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
+ ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_comp4_mpla.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
+ ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_comp4_opla.pla", 0, 352, CRC(a0f887d1) SHA1(3c666663d484d5bed81e1014f8715aab8a3d489f) )
+ ROM_LOAD( "tms0970_comp4_output.pla", 0, 352, CRC(a0f887d1) SHA1(3c666663d484d5bed81e1014f8715aab8a3d489f) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_comp4_spla.pla", 0, 157, CRC(e5bddd90) SHA1(4b1c6512c70e5bcd23c2dbf0c88cd8aa2c632a10) )
+ ROM_LOAD( "tms0970_comp4_segment.pla", 0, 157, CRC(e5bddd90) SHA1(4b1c6512c70e5bcd23c2dbf0c88cd8aa2c632a10) )
ROM_END
@@ -3959,9 +4424,9 @@ ROM_START( simon )
ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_simon_mpla.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
+ ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) )
ROM_REGION( 365, "maincpu:opla", 0 ) // unused
- ROM_LOAD( "tms1000_simon_opla.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
+ ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) )
ROM_END
@@ -3970,9 +4435,9 @@ ROM_START( ssimon )
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_LOAD( "tms1100_common1_micro.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_LOAD( "tms1100_ssimon_output.pla", 0, 365, CRC(0fea09b0) SHA1(27a56fcf2b490e9a7dbbc6ad48cc8aaca4cada94) )
ROM_END
@@ -3981,9 +4446,9 @@ ROM_START( bigtrak )
ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1000_bigtrak_mpla.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
+ ROM_LOAD( "tms1000_bigtrak_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1000_bigtrak_opla.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) )
+ ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) )
ROM_END
@@ -3992,13 +4457,13 @@ ROM_START( cnsector )
ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) )
ROM_REGION( 782, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0970_default_ipla.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
+ ROM_LOAD( "tms0970_common2_instr.pla", 0, 782, CRC(e038fc44) SHA1(dfc280f6d0a5828d1bb14fcd59ac29caf2c2d981) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_cnsector_mpla.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
+ ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_cnsector_opla.pla", 0, 352, CRC(7c0bdcd6) SHA1(dade774097e8095dca5deac7b2367d0c701aca51) )
+ ROM_LOAD( "tms0970_cnsector_output.pla", 0, 352, CRC(7c0bdcd6) SHA1(dade774097e8095dca5deac7b2367d0c701aca51) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_cnsector_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
+ ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
ROM_END
@@ -4007,9 +4472,9 @@ ROM_START( merlin )
ROM_LOAD( "mp3404", 0x0000, 0x800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_merlin_mpla.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
+ ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_merlin_opla.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) )
+ ROM_LOAD( "tms1100_merlin_output.pla", 0, 365, CRC(3921b074) SHA1(12bd58e4d6676eb8c7059ef53598279e4f1a32ea) )
ROM_END
@@ -4018,9 +4483,9 @@ ROM_START( mmerlin )
ROM_LOAD( "mp7351", 0x0000, 0x1000, CRC(0f7a4c83) SHA1(242c1278ddfe92c28fd7cd87300e48e7a4827831) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_mmerlin_opla.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) )
+ ROM_LOAD( "tms1400_mmerlin_output.pla", 0, 557, CRC(fd3dcd93) SHA1(f2afc52df700daa0eb7356c7876af9b2966f971b) )
ROM_END
@@ -4029,13 +4494,13 @@ ROM_START( stopthie )
ROM_LOAD( "mp6101b", 0x0000, 0x1000, CRC(8bde5bb4) SHA1(8c318fcce67acc24c7ae361f575f28ec6f94665a) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_default_mpla.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_opla.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
+ ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_stopthie_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
ROM_START( stopthiep )
@@ -4043,13 +4508,13 @@ ROM_START( stopthiep )
ROM_LOAD16_WORD( "us4341385", 0x0000, 0x1000, CRC(07aec38a) SHA1(0a3d0956495c0d6d9ea771feae6c14a473a800dc) ) // from patent US4341385, data should be correct (it included checksums)
ROM_REGION( 1246, "maincpu:ipla", 0 )
- ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 1982, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0980_default_mpla.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
+ ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_opla.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
+ ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0980_stopthie_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
+ ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -4058,9 +4523,9 @@ ROM_START( bankshot )
ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_bankshot_opla.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
+ ROM_LOAD( "tms1400_bankshot_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
ROM_END
@@ -4069,9 +4534,9 @@ ROM_START( splitsec )
ROM_LOAD( "mp7314", 0x0000, 0x1000, CRC(e94b2098) SHA1(f0fc1f56a829252185592a2508740354c50bedf8) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_splitsec_opla.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
+ ROM_LOAD( "tms1400_splitsec_output.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
ROM_END
@@ -4080,9 +4545,20 @@ ROM_START( tandy12 )
ROM_LOAD( "cd7282sl", 0x0000, 0x800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_tandy12_opla.pla", 0, 365, NO_DUMP )
+ ROM_LOAD( "tms1100_tandy12_output.pla", 0, 365, NO_DUMP )
+ROM_END
+
+
+ROM_START( tbreakup )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp2726a", 0x0000, 0x0400, CRC(1f7c28e2) SHA1(164cda4eb3f0b1d20955212a197c9aadf8d18a06) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_tbreakup_output.pla", 0, 365, CRC(a1ea035e) SHA1(fcf0b57ed90b41441a8974223a697f530daac0ab) )
ROM_END
@@ -4099,6 +4575,8 @@ CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Ent
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( 1980, einvader, 0, 0, einvader, einvader, driver_device, 0, "Entex", "Space Invader (Entex, TMS1100)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
+CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, driver_device, 0, "Entex", "Color Football 4 (Entex)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
+CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, driver_device, 0, "Entex", "Electronic Basketball 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, driver_device, 0, "Entex", "Raise The Devil", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
CONS( 1979, gpoker, 0, 0, gpoker, gpoker, driver_device, 0, "Gakken", "Poker (Gakken, 1979 version)", GAME_SUPPORTS_SAVE )
@@ -4126,5 +4604,7 @@ CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Par
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", GAME_SUPPORTS_SAVE ) // some of the minigames: ***
+CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
+
// ***: 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.