diff --git a/hash/fidel_scc.xml b/hash/fidel_scc.xml
index 81afc3fb828..26f8155a46e 100644
--- a/hash/fidel_scc.xml
+++ b/hash/fidel_scc.xml
@@ -11,8 +11,7 @@
Fidelity Electronics
-
-
+
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 4f4eceeb301..2cfa00446c6 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -1000,8 +1000,7 @@ MACHINE_CONFIG_END
Milton Bradley Electronic Battleship (1982 version)
* COP420 MCU label COP420-JWE/N
- This is a simplified hardware revision to the 1977/1979 version. The game
- board looks almost identical.
+ see hh_tms1k.cpp bship driver for more information
***************************************************************************/
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 79a3d0c87d1..5f6b35438f0 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -34,7 +34,7 @@
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
@MP1211 TMS1100 1980, Entex Space Invader
@MP1218 TMS1100 1980, Entex Basketball 2 (6010)
- @MP1219 TMS1100 1980, U.S. Games Super Sports 4
+ @MP1219 TMS1100 1980, U.S. Games Super Sports-4
@MP1221 TMS1100 1980, Entex Raise The Devil
*MP1296 TMS1100? 1982, Entex Black Knight
@MP1312 TMS1100 1983, Gakken FX-Micom R-165/Tandy Radio Shack Science Fair Microcomputer Trainer
@@ -1226,8 +1226,7 @@ MACHINE_CONFIG_END
This is a head to head electronic tabletop LED-display sports console.
One cartridge(Football) was included with the console, the other three were
sold in a pack. Gameplay has emphasis on strategy, read the official manual
- on how to play. Remember that you can rotate the view in MAME: rotate left
- for Home(P1) orientation, rotate right for Visitor(P2) orientation.
+ on how to play. MAME external artwork is needed for the switchable overlays.
Cartridge socket:
1 N/C
@@ -1267,11 +1266,9 @@ public:
void tc4_state::prepare_display()
{
// R5,R7-R9 are 7segs
- for (int y = 5; y < 10; y++)
- if (y != 6)
- m_display_segmask[y] = 0x7f;
+ set_display_segmask(0x3a0, 0x7f);
- // update current state (note: R6 as extra column!)
+ // note: R6 is an extra column
display_matrix(9, 10, (m_o | (m_r << 2 & 0x100)), m_r);
}
@@ -1634,7 +1631,7 @@ MACHINE_CONFIG_END
* 2 7seg LEDs, 30 other LEDs, 1-bit sound
known releases:
- - USA: Electronic Soccer, 2 versions (green bezel, transparent bezel)
+ - USA: Electronic Soccer, 2 versions (leds on green bezel, or leds under bezel)
- Germany: Fussball, with skill switch
***************************************************************************/
@@ -1657,7 +1654,7 @@ public:
void esoccer_state::prepare_display()
{
// R8,R9 are 7segs
- m_display_segmask[8] = m_display_segmask[9] = 0x7f;
+ set_display_segmask(0x300, 0x7f);
display_matrix(7, 10, m_o, m_r);
}
@@ -1781,8 +1778,7 @@ public:
void ebball_state::prepare_display()
{
// R8 is a 7seg
- m_display_segmask[8] = 0x7f;
-
+ set_display_segmask(0x100, 0x7f);
display_matrix(7, 9, ~m_o, m_r);
}
@@ -1912,9 +1908,7 @@ public:
void ebball2_state::prepare_display()
{
// R0-R2 are 7segs
- for (int y = 0; y < 3; y++)
- m_display_segmask[y] = 0x7f;
-
+ set_display_segmask(7, 0x7f);
display_matrix(8, 10, ~m_o, m_r ^ 0x7f);
}
@@ -2052,7 +2046,7 @@ void ebball3_state::prepare_display()
m_display_state[y] = (m_r >> y & 1) ? m_o : 0;
// R0,R1 are normal 7segs
- m_display_segmask[0] = m_display_segmask[1] = 0x7f;
+ set_display_segmask(3, 0x7f);
// R4,R7 contain segments(only F and B) for the two other digits
m_display_state[10] = (m_display_state[4] & 0x20) | (m_display_state[7] & 0x02);
@@ -2210,9 +2204,7 @@ protected:
void einvader_state::prepare_display()
{
// R7-R9 are 7segs
- for (int y = 7; y < 10; y++)
- m_display_segmask[y] = 0x7f;
-
+ set_display_segmask(0x380, 0x7f);
display_matrix(8, 10, m_o, m_r);
}
@@ -2313,9 +2305,7 @@ public:
void efootb4_state::prepare_display()
{
// R10-R15 are 7segs
- for (int y = 10; y < 16; y++)
- m_display_segmask[y] = 0x7f;
-
+ set_display_segmask(0xfc00, 0x7f);
display_matrix(7, 16, m_o, m_r);
}
@@ -2442,9 +2432,7 @@ public:
void ebaskb2_state::prepare_display()
{
// R0-R3 are 7segs
- for (int y = 0; y < 4; y++)
- m_display_segmask[y] = 0x7f;
-
+ set_display_segmask(0xf, 0x7f);
display_matrix(7, 10, m_o, m_r);
}
@@ -2572,9 +2560,7 @@ protected:
void raisedvl_state::prepare_display()
{
// R0-R2 are 7segs
- for (int y = 0; y < 3; y++)
- m_display_segmask[y] = 0x7f;
-
+ set_display_segmask(7, 0x7f);
display_matrix(7, 10, m_o, m_r);
}
@@ -3223,7 +3209,7 @@ public:
void starwbc_state::prepare_display()
{
// R6,R8 are 7segs
- m_display_segmask[6] = m_display_segmask[8] = 0x7f;
+ set_display_segmask(0x140, 0x7f);
display_matrix(8, 10, m_o, m_r);
}
@@ -3728,7 +3714,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Milton Bradley Electronic Battleship (1977/1979 version)
+ Milton Bradley Electronic Battleship (1977 version)
* PCB label MB 4750B
* TMS1000NLL MP3208 (die label 1000C, MP3208)
* SN75494N (acting as inverters), SN76477 sound
@@ -3739,9 +3725,9 @@ MACHINE_CONFIG_END
It went through 3 hardware revisions:
1977: model 4750A or B, see notes above
- 1980: model 4750C: cost-reduced single chip design, lesser quality game board.
+ 1979: model 4750C: cost-reduced single chip design, lesser quality game board.
The chip is assumed to be custom, no MCU: 28-pin DIP, label 4750, SCUS 0462
- 1982: back to MCU, COP420 instead of choosing TI, see hh_cop400.cpp
+ 1982: back to MCU, COP420 instead of choosing TI, emulated in hh_cop400.cpp
***************************************************************************/
@@ -5770,9 +5756,14 @@ MACHINE_CONFIG_END
/***************************************************************************
- U.S. Games Super Sports 4
+ U.S. Games Super Sports-4
* TMS1100 MP1219 (no decap)
- * x
+ * 9-digit 7seg LEDs(not fully used), 47 more LEDs, 1-bit sound
+
+ This handheld includes 4 games: Basketball, Football, Soccer, Hockey.
+ MAME external artwork is needed for the switchable overlays.
+
+ The later Coleco Total Control 4 is clearly based on this.
***************************************************************************/
@@ -5793,33 +5784,89 @@ public:
void ssports4_state::prepare_display()
{
+ // R0,R1 and R8,R9 are 7segs
+ set_display_segmask(0x303, 0x7f);
+
+ // note: R2 is an extra column
+ display_matrix(9, 10, m_o | (m_r << 6 & 0x100), m_r);
}
WRITE16_MEMBER(ssports4_state::write_r)
{
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0-R9: led select/data
+ m_r = data;
+ prepare_display();
}
WRITE16_MEMBER(ssports4_state::write_o)
{
+ // O0-O7: led data
+ m_o = data;
+ prepare_display();
}
READ8_MEMBER(ssports4_state::read_k)
{
- return 0;
+ // input mux is from R0,1,5,8,9 and O7
+ m_inp_mux = (m_r & 3) | (m_r >> 3 & 4) | (m_r >> 5 & 0x18) | (m_o >> 2 & 0x20);
+ return read_inputs(6);
}
// config
static INPUT_PORTS_START( ssports4 )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) 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_LEFT ) PORT_COCKTAIL PORT_16WAY
+
+ PORT_START("IN.2") // R5
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x04, 0x00, "Speed" )
+ PORT_CONFSETTING( 0x00, "Low" )
+ PORT_CONFSETTING( 0x04, "High" )
+ PORT_CONFNAME( 0x08, 0x08, "Players" )
+ PORT_CONFSETTING( 0x08, "1" )
+ PORT_CONFSETTING( 0x00, "2" )
+
+ PORT_START("IN.3") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_16WAY PORT_NAME("P1 Kick") // or diagonal up-left
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_16WAY PORT_NAME("P1 Info") // or diagonal up-right
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_16WAY PORT_NAME("P1 Pass")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_16WAY PORT_NAME("P1 O.P.") // offensive player (modifier button)
+
+ PORT_START("IN.4") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Kick")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Info")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Pass")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 O.P.")
+
+ PORT_START("IN.5") // O7
+ PORT_CONFNAME( 0x03, 0x00, "Game Select" )
+ PORT_CONFSETTING( 0x02, "Basketball" )
+ PORT_CONFSETTING( 0x00, "Football" )
+ PORT_CONFSETTING( 0x01, "Soccer" )
+ PORT_CONFSETTING( 0x03, "Hockey" )
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
// output PLA is not decapped, dumped electronically
static const UINT16 ssports4_output_pla[0x20] =
{
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40
};
static MACHINE_CONFIG_START( ssports4, ssports4_state )
@@ -6360,7 +6407,7 @@ COMP( 1979, zodiac, 0, 0, zodiac, zodiac, driver_device, 0, "Col
CONS( 1978, cqback, 0, 0, cqback, cqback, driver_device, 0, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, driver_device, 0, "Coleco", "Head to Head Football", MACHINE_SUPPORTS_SAVE )
CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, cnfball, 0, 0, cnfball, cnfball, driver_device, 0, "Conic", "Electronic Football (Conic, TMS1000 version)", MACHINE_SUPPORTS_SAVE )
CONS( 1979, cnfball2, 0, 0, cnfball2, cnfball2, driver_device, 0, "Conic", "Electronic Football II (Conic)", MACHINE_SUPPORTS_SAVE )
@@ -6388,7 +6435,7 @@ COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kos
CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // ***
CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW )
-CONS( 1977, bship, 0, 0, bship, bship, driver_device, 0, "Milton Bradley", "Electronic Battleship (1977/1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // ***
+CONS( 1977, bship, 0, 0, bship, bship, driver_device, 0, "Milton Bradley", "Electronic Battleship (1977 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // ***
CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // ***
@@ -6410,7 +6457,7 @@ CONS( 1989, copycatm2, copycat, 0, copycatm2, copycatm2, driver_device, 0, "Tig
CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
-CONS( 1980, ssports4, 0, 0, ssports4, ssports4, driver_device, 0, "U.S. Games", "Super Sports 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, ssports4, 0, 0, ssports4, ssports4, driver_device, 0, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
// ***: As far as MAME 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.
diff --git a/src/mame/layout/ssports4.lay b/src/mame/layout/ssports4.lay
index 9d3e4d2766a..37e5d02fa93 100644
--- a/src/mame/layout/ssports4.lay
+++ b/src/mame/layout/ssports4.lay
@@ -3,18 +3,94 @@
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/tc4.lay b/src/mame/layout/tc4.lay
index c0247704a83..943493ea1df 100644
--- a/src/mame/layout/tc4.lay
+++ b/src/mame/layout/tc4.lay
@@ -3,28 +3,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -43,102 +22,77 @@
-
-
-
-
-
+
+
-
+
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+