summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/tc4.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/tc4.c')
-rw-r--r--src/mess/drivers/tc4.c56
1 files changed, 38 insertions, 18 deletions
diff --git a/src/mess/drivers/tc4.c b/src/mess/drivers/tc4.c
index dd93e697a50..5cebf864801 100644
--- a/src/mess/drivers/tc4.c
+++ b/src/mess/drivers/tc4.c
@@ -4,10 +4,34 @@
Coleco Total Control 4
* TMS1400NLL MP7334-N2 (die labeled MP7334)
-
+
+ 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 separately. Gameplay has emphasis on strategy, read the official manual
+ on how to play. Remember that you can rotate the view in MESS.
+
+ Available cartridges:
+ - Football
+ - Basketball
+ - Hockey
+ - Soccer
+
+ Cartridge socket:
+ 1 N/C
+ 2 9V+
+ 3 power switch
+ 4 K8
+ 5 K4
+ 6 K2
+ 7 K1
+ 8 R9
+
+ Football cartridge connects pins 4 and 8
TODO:
+ - pin configuration of other carts is guessed
+ - offsensive players leds are supposed to look brighter
- MCU clock is unknown
***************************************************************************/
@@ -20,7 +44,7 @@
// The master clock is a single stage RC oscillator: R=27.3K, C=100pf.
// TMS1400 RC curve is unknown, so let's do an approximation until it is.
-#define MASTER_CLOCK (475000)
+#define MASTER_CLOCK (450000)
class tc4_state : public driver_device
@@ -34,7 +58,7 @@ public:
{ }
required_device<cpu_device> m_maincpu;
- required_ioport_array<6> m_button_matrix;
+ required_ioport_array<7> m_button_matrix;
required_device<speaker_sound_device> m_speaker;
UINT16 m_r;
@@ -67,7 +91,7 @@ public:
// To prevent flickering here, we need to simulate a decay.
// decay time, in steps of 1ms
-#define DISPLAY_DECAY_TIME 40
+#define DISPLAY_DECAY_TIME 50
inline bool tc4_state::index_is_7segled(int index)
{
@@ -75,7 +99,6 @@ inline bool tc4_state::index_is_7segled(int index)
return (index >= 5 && index <= 9 && index != 6);
}
-
void tc4_state::display_update()
{
UINT16 active_state[0x10];
@@ -144,7 +167,7 @@ READ8_MEMBER(tc4_state::read_k)
// read from cartridge
if (m_r & 0x200)
- k |= ioport("CART")->read();
+ k |= m_button_matrix[6]->read();
return k;
}
@@ -171,7 +194,6 @@ WRITE16_MEMBER(tc4_state::write_r)
-
/***************************************************************************
Inputs
@@ -180,10 +202,10 @@ WRITE16_MEMBER(tc4_state::write_r)
static INPUT_PORTS_START( tc4 )
PORT_START("IN.0") // R0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Pass/Shoot Button 3") // right
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pass/Shoot Button 1") // left
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pass/Shoot Button 2") // middle
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 D/K Button")
PORT_START("IN.1") // R1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT )
@@ -210,12 +232,12 @@ static INPUT_PORTS_START( tc4 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_PLAYER(2)
PORT_START("IN.5") // R5
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Pass/Shoot Button 3") // right
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Pass/Shoot Button 1") // left
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Pass/Shoot Button 2") // middle
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 D/K Button")
- PORT_START("CART")
+ PORT_START("IN.6") // R9
PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x00, "R9:1" )
PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "R9:2" )
PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "R9:3" )
@@ -224,7 +246,6 @@ INPUT_PORTS_END
-
/***************************************************************************
Machine Config
@@ -290,5 +311,4 @@ ROM_START( tc4 )
ROM_END
-
CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )