summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2022-02-23 23:35:07 +0100
committer hap <happppp@users.noreply.github.com>2022-02-23 23:35:18 +0100
commitf8e12ccd3204ff96f39932d5c8ad194d23ac6e6a (patch)
tree2e0ac6023f057ea86e779af311e1058dc6f7004a
parentc8f1efe03a5623c463e2daab1d8ada4afd07e9be (diff)
New working machines
-------------------- 3 in 1 Sports Arena [hap, Sean Riddle]
-rw-r--r--src/mame/drivers/hh_cop400.cpp2
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp4
-rw-r--r--src/mame/drivers/hh_pps41.cpp4
-rw-r--r--src/mame/drivers/hh_tms1k.cpp511
-rw-r--r--src/mame/drivers/hh_ucom4.cpp8
-rw-r--r--src/mame/layout/esoccer.lay76
-rw-r--r--src/mame/layout/playmaker.lay4
-rw-r--r--src/mame/layout/ssports4.lay46
-rw-r--r--src/mame/layout/t3in1sa.lay58
-rw-r--r--src/mame/layout/t7in1ss.lay (renamed from src/mame/layout/7in1ss.lay)0
-rw-r--r--src/mame/mame.lst3
11 files changed, 472 insertions, 244 deletions
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index b8983aa1175..4264a0a52d6 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -1544,7 +1544,7 @@ u8 mdallas_state::read_in()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
< ON> [YES] [NO] [NEXT]
[<W] [^N] [Sv] [E>]
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index 0c69858ca4a..b4314ce5354 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -449,7 +449,7 @@ u8 bmboxing_state::input_r()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
* left = P2 side * * right = P1 side *
@@ -3774,7 +3774,7 @@ u8 mwcbaseb_state::input_r()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(visitor team side) (home team side)
COMP PITCH [SCORE] [INNING]
diff --git a/src/mame/drivers/hh_pps41.cpp b/src/mame/drivers/hh_pps41.cpp
index c17c79e9973..4c8b70ec97d 100644
--- a/src/mame/drivers/hh_pps41.cpp
+++ b/src/mame/drivers/hh_pps41.cpp
@@ -988,7 +988,7 @@ void horocomp_state::write_spk(u8 data)
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
CAP.
AQU. [ ] SAG.
@@ -1197,7 +1197,7 @@ void mwcfootb_state::sub_write_r(u16 data)
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(home team side) (visitor team side)
[1] RECEIVERS [2] [1] RECEIVERS [2]
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index a357cfd7907..bcf6bf2b0a0 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -57,7 +57,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
@MP1218 TMS1100 1980, Entex Basketball 2 (6010)
@MP1219 TMS1100 1980, U.S. Games Super Sports-4
@MP1221 TMS1100 1980, Entex Raise The Devil (6011)
- *MP1231 TMS1100 1983, Tandy 3-in-1 Sports Arena (model 60-2178)
+ @MP1231 TMS1100 1984, Tandy 3 in 1 Sports Arena (model 60-2178)
@MP1296 TMS1100 1982, Entex Black Knight Pinball (6081)
*MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control
@MP1312 TMS1100 1983, Gakken FX-Micom R-165/Radio Shack Science Fair Microcomputer Trainer
@@ -125,7 +125,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
*MP6354 ? 1982, Tsukuda The Dracula (? note: 40-pin, VFD-capable)
*MP6361 ? 1983, Defender Strikes (? note: VFD-capable)
@MP7302 TMS1400 1980, Tiger Deluxe Football with Instant Replay
- @MP7304 TMS1400 1980, Tiger 7 in 1 Sports Stadium (model 7-555)
+ @MP7304 TMS1400 1982, Tiger 7 in 1 Sports Stadium (model 7-555)
@MP7313 TMS1400 1980, Parker Brothers Bank Shot
@MP7314 TMS1400 1980, Parker Brothers Split Second
MP7324 TMS1400 1985, Tiger K28/Coleco Talking Teacher -> tispeak.cpp
@@ -172,7 +172,7 @@ TODO:
but not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
- fake-press ON button when emulation starts for machines that have it on the button matrix
(doesn't look like any relies on it though)
-- 7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game?
+- t7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game?
Possibly BTANB, players are expected to quickly press the "First Up" button after the alarm sound.
- bship discrete sound, netlist is documented
- finish bshipb SN76477 sound
@@ -202,7 +202,7 @@ TODO:
#include "speaker.h"
// internal artwork
-#include "7in1ss.lh"
+#include "t7in1ss.lh"
#include "alphie.lh"
#include "amaztron.lh" // clickable
#include "arcmania.lh" // clickable
@@ -273,6 +273,7 @@ TODO:
#include "starwbc.lh" // clickable
#include "stopthief.lh" // clickable
#include "subwars.lh"
+#include "t3in1sa.lh"
#include "tandy12.lh" // clickable
#include "tbreakup.lh"
#include "tc4.lh"
@@ -744,7 +745,7 @@ u8 mathmagi_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
ON ONE [SEL] [NXT] [?] [/]
| | [7] [8] [9] [x]
@@ -1530,6 +1531,7 @@ the letter buttons from it, the 8-character encoding for date input uses
letters and digits in combination. This fact and the use of the P key are
why the digit buttons are mapped here as keyboard inputs rather than as a
keypad.
+
*/
static INPUT_PORTS_START( zodiac )
@@ -3540,7 +3542,7 @@ ROM_END
/***************************************************************************
Entex (Electronic) Soccer
- * TMS1000NL MP0158 (die label same)
+ * TMS1000NL MP0158 (die label 1000B, MP0158)
* 2 7seg LEDs, 30 other LEDs, 1-bit sound
known releases:
@@ -3604,14 +3606,14 @@ u8 esoccer_state::read_k()
static INPUT_PORTS_START( esoccer )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) 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_DOWN ) PORT_COCKTAIL PORT_16WAY
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) 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_RIGHT ) PORT_COCKTAIL PORT_16WAY
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
PORT_START("IN.2") // R2
@@ -3625,7 +3627,7 @@ INPUT_PORTS_END
void esoccer_state::esoccer(machine_config &config)
{
// basic machine hardware
- TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=33pF
+ TMS1000(config, m_maincpu, 475000); // approximation - RC osc. R=47K, C=33pF
m_maincpu->k().set(FUNC(esoccer_state::read_k));
m_maincpu->r().set(FUNC(esoccer_state::write_r));
m_maincpu->o().set(FUNC(esoccer_state::write_o));
@@ -3633,7 +3635,7 @@ void esoccer_state::esoccer(machine_config &config)
// video hardware
PWM_DISPLAY(config, m_display).set_size(10, 7);
m_display->set_segmask(0x300, 0x7f);
- m_display->set_bri_levels(0.01, 0.1); // player led is brighter
+ m_display->set_bri_levels(0.008, 0.08); // player led is brighter
config.set_default_layout(layout_esoccer);
// sound hardware
@@ -4055,7 +4057,7 @@ u8 ebball3_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
main device (batter side): remote pitcher:
@@ -4224,7 +4226,7 @@ INPUT_PORTS_END
void esbattle_state::esbattle(machine_config &config)
{
// basic machine hardware
- TMS1000(config, m_maincpu, 425000); // approximation - RC osc. R=47K, C=33pF
+ TMS1000(config, m_maincpu, 450000); // approximation - RC osc. R=47K, C=33pF
m_maincpu->k().set(FUNC(esbattle_state::read_k));
m_maincpu->r().set(FUNC(esbattle_state::write_r));
m_maincpu->o().set(FUNC(esbattle_state::write_o));
@@ -5292,7 +5294,7 @@ u8 gpoker_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[7] [8] [9] [DL] | (on/off switch)
[4] [5] [6] [BT]
@@ -5415,7 +5417,7 @@ void gjackpot_state::write_r(u16 data)
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(note: on dual-function buttons, upper label=Gin, lower label=Black Jack)
BJ --o GIN
@@ -5978,7 +5980,7 @@ u8 fxmcr165_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[C] [D] [E] [F] [ADR SET]
[8] [9] [A] [B] [INCR]
@@ -6112,7 +6114,7 @@ u8 elecdet_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[1] [2] [3] [SUSPECT]
[4] [5] [6] [PRIVATE QUESTION]
@@ -6265,7 +6267,7 @@ u8 starwbc_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(reconnnaissance=yellow) (tactical reaction=green)
[MAGNA] [ENEMY] [EM] [BS] [SCR]
@@ -6729,7 +6731,7 @@ u8 horseran_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[PURSE] [DIST.] [P. POSN.] [DAYS] [R.S.L.] [7] [8] [9]
[RACES] [WINS] [PLACES] [SHOWS] [EARNINGS] [4] [5] [6]
@@ -7851,7 +7853,7 @@ u8 bigtrak_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
USA version: UK version:
@@ -8115,7 +8117,7 @@ u8 mbdtower_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(green) (l.blue) (red)
[YES/ [REPEAT] [NO/
@@ -8245,7 +8247,7 @@ u8 arcmania_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(orange) (orange) (orange)
[1] [2] [3]
@@ -8368,7 +8370,7 @@ u8 cnsector_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
COMBAT INFORMATION CENTER
[NEXT SHIP] [RECALL] [MOVE SHIP]
@@ -8831,7 +8833,7 @@ u8 stopthief_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[1] [2] [OFF]
[3] [4] [ON]
@@ -8990,7 +8992,7 @@ u8 bankshot_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(note: remember that you can rotate the display in MAME)
[SELECT [BALL UP] [BALL OVER]
@@ -9237,7 +9239,7 @@ u8 lostreas_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
(note: Canadian version differs slightly to accomodoate dual-language)
[N-S(gold)] [1] [2] [3] [AIR]
@@ -9651,12 +9653,14 @@ ROM_END
/***************************************************************************
- Tandy Computerized Arcade (1981, 1982, 1995)
+ Tandy Computerized Arcade (model 60-2159 or 60-2159A)
* TMS1100 MCU, label CD7282SL
* 12 lamps behind buttons, 1-bit sound
known releases:
- World: Tandy-12: Computerized Arcade, published by Tandy
+ - World: Computerized Arcade, published by Tandy, Radio Shack brand.
+ This one is model 60-2495 from the mid-90s, perhaps different hardware!
- Mexico: Fabuloso Fred, published by Ensueño Toys (also released as
9-button version, a clone of Mego Fabulous Fred)
@@ -9727,7 +9731,7 @@ u8 tandy12_state::read_k()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
REPEAT-2 SPACE-2
[O] OFF--ON [O]
@@ -9953,6 +9957,172 @@ ROM_END
/***************************************************************************
+ Tandy 3 in 1 Sports Arena (model 60-2178)
+ * TMS1100 (just a datestamp label (8331), die label 1100B MP1231)
+ * 2x2-digit 7seg LED display + 45 other LEDs, 1-bit sound
+
+ For Tandy Sports Arena (model 60-2158), see cmsport, this is a different game.
+ This version is very similar to ssports4 released a few years earlier.
+
+ 3 overlays were included for the games (Tandy calls them graphic sheets),
+ MAME external artwork is needed for those.
+
+ It is always in 2-player head-to-head mode, the Player switch is just meant
+ for allowing the other player to have full control over 2 defense spots.
+
+***************************************************************************/
+
+class t3in1sa_state : public hh_tms1k_state
+{
+public:
+ t3in1sa_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void t3in1sa(machine_config &config);
+
+private:
+ void update_display();
+ void write_r(u16 data);
+ void write_o(u16 data);
+ u8 read_k();
+};
+
+// handlers
+
+void t3in1sa_state::update_display()
+{
+ m_display->matrix(m_r, m_o | (m_r << 6 & 0x100));
+}
+
+void t3in1sa_state::write_r(u16 data)
+{
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0,R1,R5,R7-R9: input mux
+ m_inp_mux = (data & 3) | (data >> 3 & 4) | (data >> 4 & 0x38);
+
+ // R2: led data high
+ // R3-R7: led select
+ // R0,R1,R8,R9: digit select
+ m_r = data;
+ update_display();
+}
+
+void t3in1sa_state::write_o(u16 data)
+{
+ // O0-O7: led data low
+ m_o = data;
+ update_display();
+}
+
+u8 t3in1sa_state::read_k()
+{
+ // K: multiplexed inputs
+ return read_inputs(6);
+}
+
+// config
+
+/* physical button layout and labels are like this:
+
+ ↑
+ [ ] [ ] [ ]
+ TEAM-MATE PASS
+ ←[ ] [ ]→ shoot
+ ↗ ↖
+ [ ] [ ] [ ]
+ STATUS ↓ KICK
+ pass
+ shoot
+
+Game and difficulty switches are under the yellow buttons,
+player switch is under the red buttons. P1 is yellow, P2 is red.
+
+*/
+
+static INPUT_PORTS_START( t3in1sa )
+ 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_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) )
+ PORT_CONFSETTING( 0x00, "1" ) // AMATEUR
+ PORT_CONFSETTING( 0x01, "2" ) // PRO
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x08, 0x08, DEF_STR( Players ) )
+ PORT_CONFSETTING( 0x08, "1" )
+ PORT_CONFSETTING( 0x00, "2" )
+
+ PORT_START("IN.3") // R7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x0e, 0x08, "Game Select" )
+ PORT_CONFSETTING( 0x08, "Football" ) // F
+ PORT_CONFSETTING( 0x04, "Basketball" ) // B
+ PORT_CONFSETTING( 0x02, "Soccer" ) // S
+
+ PORT_START("IN.4") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Up-Left / Kick")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Up-Right / Status")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pass / Shoot")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Team-Mate")
+
+ PORT_START("IN.5") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL PORT_NAME("P2 Up-Left / Kick")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Up-Right / Status")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Pass / Shoot")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Team-Mate")
+INPUT_PORTS_END
+
+void t3in1sa_state::t3in1sa(machine_config &config)
+{
+ // basic machine hardware
+ TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=47pF
+ m_maincpu->k().set(FUNC(t3in1sa_state::read_k));
+ m_maincpu->r().set(FUNC(t3in1sa_state::write_r));
+ m_maincpu->o().set(FUNC(t3in1sa_state::write_o));
+
+ // video hardware
+ PWM_DISPLAY(config, m_display).set_size(10, 9);
+ m_display->set_segmask(0x303, 0x7f);
+ m_display->set_bri_levels(0.005, 0.05); // offense leds are brighter
+ config.set_default_layout(layout_t3in1sa);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( t3in1sa )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1231", 0x0000, 0x0800, CRC(1c24e5c2) SHA1(0b6c2edea27eba15e890d82475b91a5e9ef6c4b9) )
+
+ 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_t3in1sa_output.pla", 0, 365, CRC(de82a294) SHA1(7187666a510919b90798b92b9104ac5d6820d559) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Telesensory Systems, Inc.(TSI) Speech+
* TMS1000 MCU, label TMS1007NL (die label 1000B, 1007A)
* TSI S14001A speech chip, GI S14007-A 2KB maskrom for samples
@@ -12609,137 +12779,6 @@ ROM_END
/***************************************************************************
- Tiger 7 in 1 Sports Stadium (model 7-555)
- * TMS1400 MP7304 (die label TMS1400 MP7304A)
- * 2x2-digit 7seg LED display + 39 other LEDs, 1-bit sound
-
- This handheld includes 7 games: 1: Basketball, 2: Hockey, 3: Soccer,
- 4: Maze, 5: Baseball, 6: Football, 7: Raquetball.
- MAME external artwork is needed for the switchable overlays.
-
- known releases:
- - World: 7 in 1 Sports Stadium, published by Tiger
- - USA: 7 in 1 Sports, published by Sears
-
-***************************************************************************/
-
-class ss7in1_state : public hh_tms1k_state
-{
-public:
- ss7in1_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_tms1k_state(mconfig, type, tag)
- { }
-
- void ss7in1(machine_config &config);
-
-private:
- void update_display();
- void write_r(u16 data);
- void write_o(u16 data);
- u8 read_k();
-};
-
-// handlers
-
-void ss7in1_state::update_display()
-{
- m_display->matrix(m_r, m_o);
-}
-
-void ss7in1_state::write_r(u16 data)
-{
- // R9: speaker out
- m_speaker->level_w(data >> 9 & 1);
-
- // R0-R2,R10: input mux
- m_inp_mux = (data & 7) | (data >> 7 & 8);
-
- // R0-R3: digit select
- // R4-R8: led select
- m_r = data;
- update_display();
-}
-
-void ss7in1_state::write_o(u16 data)
-{
- // O0-O7: led data
- m_o = data;
- update_display();
-}
-
-u8 ss7in1_state::read_k()
-{
- // K: multiplexed inputs
- return read_inputs(4);
-}
-
-// config
-
-static INPUT_PORTS_START( ss7in1 )
- PORT_START("IN.0") // R0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
-
- PORT_START("IN.1") // R1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
-
- PORT_START("IN.2") // R2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
-
- PORT_START("IN.3") // R10
- PORT_CONFNAME( 0x01, 0x00, DEF_STR( Players ) )
- PORT_CONFSETTING( 0x00, "1" )
- PORT_CONFSETTING( 0x01, "2" )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-void ss7in1_state::ss7in1(machine_config &config)
-{
- // basic machine hardware
- TMS1400(config, m_maincpu, 425000); // approximation - RC osc. R=47K, C=47pF
- m_maincpu->k().set(FUNC(ss7in1_state::read_k));
- m_maincpu->r().set(FUNC(ss7in1_state::write_r));
- m_maincpu->o().set(FUNC(ss7in1_state::write_o));
-
- // video hardware
- PWM_DISPLAY(config, m_display).set_size(9, 8);
- m_display->set_segmask(0xf, 0x7f);
- m_display->set_bri_levels(0.004, 0.04); // player led is brighter
- config.set_default_layout(layout_7in1ss);
-
- // sound hardware
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker);
- m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( 7in1ss )
- ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) )
-
- ROM_REGION( 867, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
- ROM_REGION( 557, "maincpu:opla", 0 )
- ROM_LOAD( "tms1400_7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
Tiger Electronics Copy Cat (model 7-520)
* PCB label CC REV B
* TMS1000 MCU, label 69-11513 MP0919 (die label MP0919)
@@ -13039,6 +13078,137 @@ ROM_END
/***************************************************************************
+ Tiger 7 in 1 Sports Stadium (model 7-555)
+ * TMS1400 MP7304 (die label TMS1400 MP7304A)
+ * 2x2-digit 7seg LED display + 39 other LEDs, 1-bit sound
+
+ This handheld includes 7 games: 1: Basketball, 2: Hockey, 3: Soccer,
+ 4: Maze, 5: Baseball, 6: Football, 7: Raquetball.
+ MAME external artwork is needed for the switchable overlays.
+
+ known releases:
+ - World: 7 in 1 Sports Stadium, published by Tiger
+ - USA: 7 in 1 Sports, published by Sears
+
+***************************************************************************/
+
+class t7in1ss_state : public hh_tms1k_state
+{
+public:
+ t7in1ss_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void t7in1ss(machine_config &config);
+
+private:
+ void update_display();
+ void write_r(u16 data);
+ void write_o(u16 data);
+ u8 read_k();
+};
+
+// handlers
+
+void t7in1ss_state::update_display()
+{
+ m_display->matrix(m_r, m_o);
+}
+
+void t7in1ss_state::write_r(u16 data)
+{
+ // R9: speaker out
+ m_speaker->level_w(data >> 9 & 1);
+
+ // R0-R2,R10: input mux
+ m_inp_mux = (data & 7) | (data >> 7 & 8);
+
+ // R0-R3: digit select
+ // R4-R8: led select
+ m_r = data;
+ update_display();
+}
+
+void t7in1ss_state::write_o(u16 data)
+{
+ // O0-O7: led data
+ m_o = data;
+ update_display();
+}
+
+u8 t7in1ss_state::read_k()
+{
+ // K: multiplexed inputs
+ return read_inputs(4);
+}
+
+// config
+
+static INPUT_PORTS_START( t7in1ss )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+
+ PORT_START("IN.3") // R10
+ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Players ) )
+ PORT_CONFSETTING( 0x00, "1" )
+ PORT_CONFSETTING( 0x01, "2" )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+void t7in1ss_state::t7in1ss(machine_config &config)
+{
+ // basic machine hardware
+ TMS1400(config, m_maincpu, 425000); // approximation - RC osc. R=47K, C=47pF
+ m_maincpu->k().set(FUNC(t7in1ss_state::read_k));
+ m_maincpu->r().set(FUNC(t7in1ss_state::write_r));
+ m_maincpu->o().set(FUNC(t7in1ss_state::write_o));
+
+ // video hardware
+ PWM_DISPLAY(config, m_display).set_size(9, 8);
+ m_display->set_segmask(0xf, 0x7f);
+ m_display->set_bri_levels(0.004, 0.04); // player led is brighter
+ config.set_default_layout(layout_t7in1ss);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( t7in1ss )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7304", 0x0000, 0x1000, CRC(2a1c8390) SHA1(fa10e60686af6828a61f05046abc3854ab49af95) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_t7in1ss_output.pla", 0, 557, CRC(6b7660f7) SHA1(bb7d58fa04e7606ccdf5b209e1b089948bdd1e7c) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Tomy(tronics) Break Up (manufactured in Japan)
* PCB label TOMY B.O.
* TMS1040 MP2726 TOMY WIPE (die label MP2726A)
@@ -13377,11 +13547,13 @@ ROM_END
* TMS1100 MP1219 (no decap)
* 4 7seg LEDs, 49 other LEDs, 1-bit sound
+ The game is very similar to t3in1sa, even parts of the ROM match. But by
+ the time that one was released (in 1983 or 1984), U.S. Games did not exist
+ anymore. I suspect t3in1sa was programmed by the same (Hong Kong) company.
+
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.
-
***************************************************************************/
class ssports4_state : public hh_tms1k_state
@@ -13458,14 +13630,14 @@ static INPUT_PORTS_START( ssports4 )
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( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_16WAY PORT_NAME("P1 Up-Left / Kick")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_16WAY PORT_NAME("P1 Up-Right / Info")
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( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Up-Left / Kick")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Up-Right / 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.")
@@ -13481,7 +13653,7 @@ INPUT_PORTS_END
void ssports4_state::ssports4(machine_config &config)
{
// basic machine hardware
- TMS1100(config, m_maincpu, 375000); // approximation - RC osc. R=47K, C=47pF
+ TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=47K, C=47pF
m_maincpu->k().set(FUNC(ssports4_state::read_k));
m_maincpu->r().set(FUNC(ssports4_state::write_r));
m_maincpu->o().set(FUNC(ssports4_state::write_o));
@@ -13489,7 +13661,7 @@ void ssports4_state::ssports4(machine_config &config)
// video hardware
PWM_DISPLAY(config, m_display).set_size(10, 9);
m_display->set_segmask(0x303, 0x7f);
- m_display->set_bri_levels(0.003, 0.03); // offense leds are brighter
+ m_display->set_bri_levels(0.005, 0.05); // offense leds are brighter
config.set_default_layout(layout_ssports4);
// sound hardware
@@ -13792,6 +13964,7 @@ CONS( 1980, tcfball, 0, 0, tcfball, tcfball, tcfball_state, emp
CONS( 1980, tcfballa, tcfball, 0, tcfballa, tcfballa, tcfballa_state, empty_init, "Tandy Corporation", "Championship Football (model 60-2151)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, tandy12_state, empty_init, "Tandy Corporation", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
CONS( 1982, monkeysee, 0, 0, monkeysee, monkeysee, monkeysee_state, empty_init, "Tandy Corporation", "Monkey See (1982 version)", MACHINE_SUPPORTS_SAVE )
+CONS( 1984, t3in1sa, 0, 0, t3in1sa, t3in1sa, t3in1sa_state, empty_init, "Tandy Corporation", "3 in 1 Sports Arena", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
COMP( 1976, speechp, 0, 0, speechp, speechp, speechp_state, empty_init, "Telesensory Systems, Inc.", "Speech+", MACHINE_SUPPORTS_SAVE )
@@ -13818,10 +13991,10 @@ SYST( 1979, tithermos, 0, 0, tithermos, tithermos, tithermos_state, emp
CONS( 1979, subwars, 0, 0, subwars, subwars, subwars_state, empty_init, "Tiger Electronics", "Sub Wars (LED version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, playmaker, 0, 0, playmaker, playmaker, playmaker_state, empty_init, "Tiger Electronics", "Playmaker: Hockey, Soccer, Basketball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1980, dxfootb, 0, 0, dxfootb, dxfootb, dxfootb_state, empty_init, "Tiger Electronics", "Deluxe Football with Instant Replay", MACHINE_SUPPORTS_SAVE )
-CONS( 1980, 7in1ss, 0, 0, ss7in1, ss7in1, ss7in1_state, empty_init, "Tiger Electronics", "7 in 1 Sports Stadium", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, copycat, 0, 0, copycat, copycat, copycat_state, empty_init, "Tiger Electronics", "Copy Cat (model 7-520)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, copycatm2, copycat, 0, copycatm2, copycatm2, copycatm2_state, empty_init, "Tiger Electronics", "Copy Cat (model 7-522)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1981, ditto, 0, 0, ditto, ditto, ditto_state, empty_init, "Tiger Electronics", "Ditto", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1982, t7in1ss, 0, 0, t7in1ss, t7in1ss, t7in1ss_state, empty_init, "Tiger Electronics", "7 in 1 Sports Stadium", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, tbreakup_state, empty_init, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, phpball, 0, 0, phpball, phpball, phpball_state, empty_init, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 408df17b279..cfa4ee6b65c 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -424,7 +424,7 @@ u8 ssfball_state::input_b_r()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
[A] [B] [C] [PASS] [KICK/
^FORMATION^ DISPLAY]
@@ -845,7 +845,7 @@ u8 splasfgt_state::input_b_r()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
* left = P1 side * * right = P2 side * (note: in 1P mode, switch sides between turns)
@@ -2453,7 +2453,7 @@ u8 tmtennis_state::input_r(offs_t offset)
// config
-/* Pro-Tennis physical button layout and labels is like this:
+/* Pro-Tennis physical button layout and labels are like this:
* left = P2/CPU side * * right = P1 side *
@@ -2946,7 +2946,7 @@ u8 alnchase_state::input_r()
// config
-/* physical button layout and labels is like this:
+/* physical button layout and labels are like this:
POWER SOUND LEVEL PLAYER
ON ON PRO TWO START
diff --git a/src/mame/layout/esoccer.lay b/src/mame/layout/esoccer.lay
index 9f43a873633..0bd6dbb8f44 100644
--- a/src/mame/layout/esoccer.lay
+++ b/src/mame/layout/esoccer.lay
@@ -31,8 +31,7 @@ license:CC0
<view name="Internal Layout">
<bounds left="2.5" right="33.5" top="5.7" bottom="40.3" />
- <!-- bezel -->
-
+ <!-- bezel -->
<element ref="static_green"><bounds x="5" y="5" width="25" height="35" /></element>
<!-- middle -->
@@ -89,45 +88,44 @@ license:CC0
<element ref="static_black"><bounds x="3" y="1.6" width="30" height="4" /></element>
<element ref="static_black"><bounds x="3" y="40.4" width="30" height="4" /></element>
- <!-- leds -->
-
- <element name="0.0" ref="led"><bounds x="15" y="7.5" width="1" height="1" /></element>
+ <!-- leds -->
+ <element name="0.2" ref="led"><bounds x="15" y="7.5" width="1" height="1" /></element>
<element name="0.1" ref="led"><bounds x="17.5" y="7.5" width="1" height="1" /></element>
- <element name="0.2" ref="led"><bounds x="20" y="7.5" width="1" height="1" /></element>
-
- <element name="1.0" ref="led"><bounds x="10" y="10" width="1" height="1" /></element>
- <element name="1.1" ref="led"><bounds x="15" y="10" width="1" height="1" /></element>
- <element name="1.2" ref="led"><bounds x="20" y="10" width="1" height="1" /></element>
- <element name="1.3" ref="led"><bounds x="25" y="10" width="1" height="1" /></element>
-
- <element name="2.0" ref="led"><bounds x="10" y="15" width="1" height="1" /></element>
- <element name="2.1" ref="led"><bounds x="15" y="15" width="1" height="1" /></element>
- <element name="2.2" ref="led"><bounds x="20" y="15" width="1" height="1" /></element>
- <element name="2.3" ref="led"><bounds x="25" y="15" width="1" height="1" /></element>
-
- <element name="3.0" ref="led"><bounds x="10" y="20" width="1" height="1" /></element>
- <element name="3.1" ref="led"><bounds x="15" y="20" width="1" height="1" /></element>
- <element name="3.2" ref="led"><bounds x="20" y="20" width="1" height="1" /></element>
- <element name="3.3" ref="led"><bounds x="25" y="20" width="1" height="1" /></element>
-
- <element name="4.0" ref="led"><bounds x="10" y="25" width="1" height="1" /></element>
- <element name="4.1" ref="led"><bounds x="15" y="25" width="1" height="1" /></element>
- <element name="4.2" ref="led"><bounds x="20" y="25" width="1" height="1" /></element>
- <element name="4.3" ref="led"><bounds x="25" y="25" width="1" height="1" /></element>
-
- <element name="5.0" ref="led"><bounds x="10" y="30" width="1" height="1" /></element>
- <element name="5.1" ref="led"><bounds x="15" y="30" width="1" height="1" /></element>
- <element name="5.2" ref="led"><bounds x="20" y="30" width="1" height="1" /></element>
- <element name="5.3" ref="led"><bounds x="25" y="30" width="1" height="1" /></element>
-
- <element name="6.0" ref="led"><bounds x="10" y="35" width="1" height="1" /></element>
- <element name="6.1" ref="led"><bounds x="15" y="35" width="1" height="1" /></element>
- <element name="6.2" ref="led"><bounds x="20" y="35" width="1" height="1" /></element>
- <element name="6.3" ref="led"><bounds x="25" y="35" width="1" height="1" /></element>
-
- <element name="7.0" ref="led"><bounds x="15" y="37.5" width="1" height="1" /></element>
+ <element name="0.0" ref="led"><bounds x="20" y="7.5" width="1" height="1" /></element>
+
+ <element name="1.3" ref="led"><bounds x="10" y="10" width="1" height="1" /></element>
+ <element name="1.2" ref="led"><bounds x="15" y="10" width="1" height="1" /></element>
+ <element name="1.1" ref="led"><bounds x="20" y="10" width="1" height="1" /></element>
+ <element name="1.0" ref="led"><bounds x="25" y="10" width="1" height="1" /></element>
+
+ <element name="2.3" ref="led"><bounds x="10" y="15" width="1" height="1" /></element>
+ <element name="2.2" ref="led"><bounds x="15" y="15" width="1" height="1" /></element>
+ <element name="2.1" ref="led"><bounds x="20" y="15" width="1" height="1" /></element>
+ <element name="2.0" ref="led"><bounds x="25" y="15" width="1" height="1" /></element>
+
+ <element name="3.3" ref="led"><bounds x="10" y="20" width="1" height="1" /></element>
+ <element name="3.2" ref="led"><bounds x="15" y="20" width="1" height="1" /></element>
+ <element name="3.1" ref="led"><bounds x="20" y="20" width="1" height="1" /></element>
+ <element name="3.0" ref="led"><bounds x="25" y="20" width="1" height="1" /></element>
+
+ <element name="4.3" ref="led"><bounds x="10" y="25" width="1" height="1" /></element>
+ <element name="4.2" ref="led"><bounds x="15" y="25" width="1" height="1" /></element>
+ <element name="4.1" ref="led"><bounds x="20" y="25" width="1" height="1" /></element>
+ <element name="4.0" ref="led"><bounds x="25" y="25" width="1" height="1" /></element>
+
+ <element name="5.3" ref="led"><bounds x="10" y="30" width="1" height="1" /></element>
+ <element name="5.2" ref="led"><bounds x="15" y="30" width="1" height="1" /></element>
+ <element name="5.1" ref="led"><bounds x="20" y="30" width="1" height="1" /></element>
+ <element name="5.0" ref="led"><bounds x="25" y="30" width="1" height="1" /></element>
+
+ <element name="6.3" ref="led"><bounds x="10" y="35" width="1" height="1" /></element>
+ <element name="6.2" ref="led"><bounds x="15" y="35" width="1" height="1" /></element>
+ <element name="6.1" ref="led"><bounds x="20" y="35" width="1" height="1" /></element>
+ <element name="6.0" ref="led"><bounds x="25" y="35" width="1" height="1" /></element>
+
+ <element name="7.2" ref="led"><bounds x="15" y="37.5" width="1" height="1" /></element>
<element name="7.1" ref="led"><bounds x="17.5" y="37.5" width="1" height="1" /></element>
- <element name="7.2" ref="led"><bounds x="20" y="37.5" width="1" height="1" /></element>
+ <element name="7.0" ref="led"><bounds x="20" y="37.5" width="1" height="1" /></element>
<element name="digit8" ref="digit"><bounds x="30.5" y="20" width="2" height="3" /></element>
<element ref="text_score"><bounds x="30" y="23.2" width="3" height="0.8" /></element>
diff --git a/src/mame/layout/playmaker.lay b/src/mame/layout/playmaker.lay
index a595bbdd276..fc454f7d6d6 100644
--- a/src/mame/layout/playmaker.lay
+++ b/src/mame/layout/playmaker.lay
@@ -48,9 +48,9 @@ license:CC0
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="2.2" right="35" top="-2" bottom="38" />
+ <bounds left="2.1" right="35" top="-2" bottom="38" />
<group ref="display1"><bounds x="12" y="0" width="21" height="36" /><orientation rotate="270" /></group>
- <group ref="display2"><bounds x="4.2" y="14" width="3.8" height="8" /><orientation rotate="270" /></group>
+ <group ref="display2"><bounds x="4.1" y="14" width="3.9" height="8" /><orientation rotate="270" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/ssports4.lay b/src/mame/layout/ssports4.lay
index cfb6545fb6e..cd2eb5121e4 100644
--- a/src/mame/layout/ssports4.lay
+++ b/src/mame/layout/ssports4.lay
@@ -6,25 +6,26 @@ license:CC0
<!-- define elements -->
- <element name="static_white"><rect><color red="0.7" green="0.7" blue="0.7" /></rect></element>
-
<element name="digit" defstate="0">
- <led7seg><color red="1.0" green="0.25" blue="0.28" /></led7seg>
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</element>
<element name="led" defstate="0">
- <text string=""></text>
+ <rect>
+ <bounds x="-1.5" y="-1.5" width="4" height="4" />
+ <color alpha="0" />
+ </rect>
<disk state="0">
- <color red="0.1" green="0.025" blue="0.028" />
- <bounds x="0.25" y="0.25" width="0.5" height="0.5" />
+ <color red="0.1" green="0.01" blue="0.015" />
+ <bounds x="0" y="0" width="1" height="1" />
</disk>
<disk state="1">
- <color red="0.5" green="0.125" blue="0.14" />
- <bounds x="0.25" y="0.25" width="0.5" height="0.5" />
+ <color red="0.5" green="0.05" blue="0.075" />
+ <bounds x="0" y="0" width="1" height="1" />
</disk>
<disk state="2">
- <color red="1.0" green="0.25" blue="0.28" />
- <bounds x="0.25" y="0.25" width="0.5" height="0.5" />
+ <color red="1.0" green="0.1" blue="0.15" />
+ <bounds x="0" y="0" width="1" height="1" />
</disk>
</element>
@@ -32,21 +33,18 @@ license:CC0
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="1.5" right="11" top="0" bottom="11" />
- <element ref="static_white"><bounds x="4" y="-0.5" width="0.1" height="12" /></element>
-
- <!-- score panel leds -->
-
- <element name="0.8" ref="led"><bounds x="2.5" y="9" width="1" height="1" /></element>
- <element name="1.8" ref="led"><bounds x="2.5" y="1" width="1" height="1" /></element>
+ <bounds left="1.5" right="10.5" top="0" bottom="11" />
- <element name="digit9" ref="digit"><bounds x="2" y="7" width="1.5" height="1" /><orientation rotate="270" /></element>
- <element name="digit8" ref="digit"><bounds x="2" y="6" width="1.5" height="1" /><orientation rotate="270" /></element>
- <element name="digit1" ref="digit"><bounds x="2" y="4" width="1.5" height="1" /><orientation rotate="270" /></element>
- <element name="digit0" ref="digit"><bounds x="2" y="3" width="1.5" height="1" /><orientation rotate="270" /></element>
+ <!-- score panel leds -->
+ <element name="0.8" ref="led"><bounds x="2.25" y="8" width="1" height="1" /></element>
+ <element name="1.8" ref="led"><bounds x="2.25" y="2" width="1" height="1" /></element>
- <!-- playfield leds -->
+ <element name="digit9" ref="digit"><bounds x="2.25" y="7.125" width="1" height="0.75" /><orientation rotate="270" /></element>
+ <element name="digit8" ref="digit"><bounds x="2.25" y="6.125" width="1" height="0.75" /><orientation rotate="270" /></element>
+ <element name="digit1" ref="digit"><bounds x="2.25" y="4.125" width="1" height="0.75" /><orientation rotate="270" /></element>
+ <element name="digit0" ref="digit"><bounds x="2.25" y="3.125" width="1" height="0.75" /><orientation rotate="270" /></element>
+ <!-- playfield leds -->
<element name="7.0" ref="led"><bounds x="5" y="9" width="1" height="1" /></element>
<element name="7.1" ref="led"><bounds x="5" y="8" width="1" height="1" /></element>
<element name="7.2" ref="led"><bounds x="5" y="7" width="1" height="1" /></element>
@@ -67,7 +65,7 @@ license:CC0
<element name="6.7" ref="led"><bounds x="6" y="2" width="1" height="1" /></element>
<element name="6.8" ref="led"><bounds x="6" y="1" width="1" height="1" /></element>
- <element name="9.8" ref="led"><bounds x="7" y="10" width="1" height="1" /></element>
+ <element name="9.8" ref="led"><bounds x="7" y="9.75" width="1" height="1" /></element>
<element name="5.0" ref="led"><bounds x="7" y="9" width="1" height="1" /></element>
<element name="5.1" ref="led"><bounds x="7" y="8" width="1" height="1" /></element>
<element name="5.2" ref="led"><bounds x="7" y="7" width="1" height="1" /></element>
@@ -77,7 +75,7 @@ license:CC0
<element name="5.6" ref="led"><bounds x="7" y="3" width="1" height="1" /></element>
<element name="5.7" ref="led"><bounds x="7" y="2" width="1" height="1" /></element>
<element name="5.8" ref="led"><bounds x="7" y="1" width="1" height="1" /></element>
- <element name="8.8" ref="led"><bounds x="7" y="0" width="1" height="1" /></element>
+ <element name="8.8" ref="led"><bounds x="7" y="0.25" width="1" height="1" /></element>
<element name="4.0" ref="led"><bounds x="8" y="9" width="1" height="1" /></element>
<element name="4.1" ref="led"><bounds x="8" y="8" width="1" height="1" /></element>
diff --git a/src/mame/layout/t3in1sa.lay b/src/mame/layout/t3in1sa.lay
new file mode 100644
index 00000000000..27975d6c6a7
--- /dev/null
+++ b/src/mame/layout/t3in1sa.lay
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+-->
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </element>
+
+ <element name="led" defstate="0">
+ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
+ <disk state="1"><color red="0.5" green="0.05" blue="0.075" /></disk>
+ <disk state="2"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ </element>
+
+
+<!-- led matrix -->
+
+ <group name="display1">
+ <bounds x="0" y="0" width="25" height="13" />
+
+ <repeat count="5">
+ <param name="y" start="0" increment="3" />
+ <param name="i1" start="7" increment="-1" />
+
+ <repeat count="9">
+ <param name="x" start="0" increment="3" />
+ <param name="i2" start="0" increment="1" />
+ <element name="~i1~.~i2~" ref="led"><bounds x="~x~" y="~y~" width="1" height="1" /></element>
+ </repeat>
+ </repeat>
+ </group>
+
+
+<!-- 7seg leds -->
+
+ <group name="display2">
+ <bounds x="0" y="0" width="10" height="3" />
+
+ <element name="digit9" ref="digit"><bounds x="0" y="0" width="2" height="3" /></element>
+ <element name="digit8" ref="digit"><bounds x="2" y="0" width="2" height="3" /></element>
+ <element name="digit1" ref="digit"><bounds x="6" y="0" width="2" height="3" /></element>
+ <element name="digit0" ref="digit"><bounds x="8" y="0" width="2" height="3" /></element>
+ </group>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="4" right="25" top="-2" bottom="27" />
+
+ <group ref="display1"><bounds x="10" y="0" width="13" height="25" /><orientation rotate="270" /></group>
+ <group ref="display2"><bounds x="6" y="9" width="2" height="7" /><orientation rotate="270" /></group>
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/7in1ss.lay b/src/mame/layout/t7in1ss.lay
index 8d97c5a4626..8d97c5a4626 100644
--- a/src/mame/layout/7in1ss.lay
+++ b/src/mame/layout/t7in1ss.lay
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 387344a1ef0..890f4cbd2f9 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -16668,7 +16668,6 @@ vespovar // Elektronika
vfutbol // Elektronika
@source:hh_tms1k.cpp
-7in1ss // Tiger Electronics
alphie // Playskool
arcmania // Milton Bradley
arrball // A-One LSI
@@ -16748,6 +16747,8 @@ starwbcp // Kenner (patent)
stopthief // Parker Bros
stopthiefp // Parker Bros (patent)
subwars // Tiger Electronics
+t3in1sa // Tandy Corporation
+t7in1ss // Tiger Electronics
tandy12 // Tandy Corporation
tbreakup // Tomy
tc4 // Coleco