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 @@ - - - - - + + - + - - - + + + + - - - - - + + + + - - - - + - - + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +