This commit is contained in:
Angelo Salese 2015-02-19 00:18:11 +01:00
commit 95db79cfe0

View File

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