mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
New Working machine added
-------------------- Coleco Electronic Quarterback [hap, Sean Riddle]
This commit is contained in:
parent
3f04c5f932
commit
fec7343484
@ -294,4 +294,4 @@ ROM_END
|
||||
******************************************************************************/
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1989, feagv2, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1989, feagv2, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
@ -47,7 +47,7 @@
|
||||
MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.cpp
|
||||
@MP3404 TMS1100 1978, Parker Brothers Merlin
|
||||
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
|
||||
*MP3415 TMS1100 1978, Coleco Electronic Quarterback
|
||||
@MP3415 TMS1100 1978, Coleco Electronic Quarterback
|
||||
@MP3438A TMS1100 1979, Kenner Star Wars Electronic Battle Command
|
||||
MP3450A TMS1100 1979, MicroVision cartridge: Blockbuster
|
||||
MP3454 TMS1100 1979, MicroVision cartridge: Star Trek Phaser Strike
|
||||
@ -115,6 +115,7 @@
|
||||
#include "bigtrak.lh"
|
||||
#include "cnsector.lh"
|
||||
#include "comp4.lh"
|
||||
#include "cqback.lh"
|
||||
#include "ebball.lh"
|
||||
#include "ebball2.lh"
|
||||
#include "ebball3.lh"
|
||||
@ -316,6 +317,19 @@ UINT8 hh_tms1k_state::read_inputs(int columns)
|
||||
return ret;
|
||||
}
|
||||
|
||||
UINT8 hh_tms1k_state::read_rotated_inputs(int columns, UINT8 rowmask)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
UINT16 colmask = (1 << columns) - 1;
|
||||
|
||||
// read selected input columns
|
||||
for (int i = 0; i < 8; i++)
|
||||
if (1 << i & rowmask && m_inp_matrix[i]->read() & m_inp_mux & colmask)
|
||||
ret |= 1 << i;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// devices with a TMS0980 can auto power-off
|
||||
|
||||
@ -671,6 +685,231 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Coleco Electronic Quarterback
|
||||
* TMS1100NLL MP3415 (die labeled MP3415)
|
||||
* 9-digit LED grid, 1bit sound
|
||||
|
||||
known releases:
|
||||
- USA(1): Electronic Quarterback
|
||||
- USA(2): Electronic Touchdown, distributed by Sears
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class cqback_state : public hh_tms1k_state
|
||||
{
|
||||
public:
|
||||
cqback_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void cqback_state::prepare_display()
|
||||
{
|
||||
// R9 selects between segments B/C or A'/D'
|
||||
UINT16 seg = m_o;
|
||||
if (m_r & 0x200)
|
||||
seg = (m_o << 7 & 0x300) | (m_o & 0xf9);
|
||||
|
||||
set_display_segmask(0x1ff, 0xff);
|
||||
display_matrix(11, 9, seg, m_r & 0x1ff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(cqback_state::write_r)
|
||||
{
|
||||
// R10: speaker out
|
||||
m_speaker->level_w(data >> 10 & 1);
|
||||
|
||||
// R0-R4: input mux
|
||||
m_inp_mux = data & 0x1f;
|
||||
|
||||
// R0-R9: select digit/segment
|
||||
m_r = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(cqback_state::write_o)
|
||||
{
|
||||
// O0-O7: digit segments
|
||||
m_o = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(cqback_state::read_k)
|
||||
{
|
||||
// K: multiplexed inputs, rotated matrix
|
||||
return read_rotated_inputs(5);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( cqback )
|
||||
PORT_START("IN.0") // K1
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Left/Right")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Kick/Pass")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Display")
|
||||
|
||||
PORT_START("IN.1") // K2
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_TOGGLE PORT_NAME("Play Selector") // pass
|
||||
PORT_BIT( 0x02, 0x02, IPT_SPECIAL ) PORT_CONDITION("IN.1", 0x01, EQUALS, 0x00) // run/kick
|
||||
|
||||
PORT_START("IN.2") // K4
|
||||
PORT_CONFNAME( 0x03, 0x02, "Skill Level" )
|
||||
PORT_CONFSETTING( 0x02, "1" )
|
||||
PORT_CONFSETTING( 0x01, "2" )
|
||||
|
||||
PORT_START("IN.3") // K8
|
||||
PORT_CONFNAME( 0x01, 0x00, "Factory Test" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x01, DEF_STR( On ) ) // TP1-TP2
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( cqback, cqback_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1100, 310000) // approximation - RC osc. R=33K, C=100pf
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(cqback_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cqback_state, write_r))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cqback_state, write_o))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_cqback)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Coleco Head to Head Football
|
||||
* TMS1100NLLE (rev. E!) MP3460 (die labeled MP3460)
|
||||
* 2*SN75492N LED display drivers, 9-digit LED grid, 1bit sound
|
||||
|
||||
known releases:
|
||||
- USA(1): Head to Head Football
|
||||
- USA(2): Team Play Football, distributed by Sears
|
||||
|
||||
LED electronic football game. To distinguish between offense and defense,
|
||||
offense blips (should) appear brighter. The hardware is similar to cqback.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class h2hfootb_state : public hh_tms1k_state
|
||||
{
|
||||
public:
|
||||
h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void h2hfootb_state::prepare_display()
|
||||
{
|
||||
set_display_segmask(0x1ff, 0x7f);
|
||||
display_matrix(9, 9, m_o | (m_r >> 1 & 0x100), m_r & 0x1ff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(h2hfootb_state::write_r)
|
||||
{
|
||||
// R10: speaker out
|
||||
m_speaker->level_w(data >> 10 & 1);
|
||||
|
||||
// R0-R8: input mux
|
||||
m_inp_mux = data & 0x1ff;
|
||||
|
||||
// R0-R8: select led
|
||||
// R9: led between digits
|
||||
m_r = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(h2hfootb_state::write_o)
|
||||
{
|
||||
// O0-O7: digit segments A-G,A'
|
||||
m_o = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(h2hfootb_state::read_k)
|
||||
{
|
||||
// K: multiplexed inputs, rotated matrix
|
||||
return read_rotated_inputs(9);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( h2hfootb )
|
||||
PORT_START("IN.0") // K1
|
||||
PORT_CONFNAME( 0x03, 0x01, "Players" )
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
|
||||
PORT_START("IN.1") // K2
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_TOGGLE PORT_NAME("P1 Play Selector") // pass
|
||||
PORT_BIT( 0x02, 0x02, IPT_SPECIAL ) PORT_CONDITION("IN.1", 0x01, EQUALS, 0x00) // run/kick
|
||||
|
||||
PORT_START("IN.2") // K4
|
||||
PORT_CONFNAME( 0x03, 0x01, "Skill Level" )
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
|
||||
PORT_START("IN.3") // K8
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Left/Right")
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Kick/Pass")
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Display")
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( h2hfootb, h2hfootb_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1100, 310000) // approximation - RC osc. R=39K, C=100pf, but unknown RC curve
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(h2hfootb_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(h2hfootb_state, write_r))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(h2hfootb_state, write_o))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_h2hfootb)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Coleco Head to Head Baseball
|
||||
@ -707,8 +946,8 @@ protected:
|
||||
|
||||
void h2hbaseb_state::prepare_display()
|
||||
{
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask));
|
||||
display_matrix_seg(9, 9, (m_r & 0x100) | m_o, (m_r & 0xff) | (m_r >> 1 & 0x100), 0x7f);
|
||||
set_display_segmask(0x1ff, 0x7f);
|
||||
display_matrix(9, 9, (m_r & 0x100) | m_o, (m_r & 0xff) | (m_r >> 1 & 0x100));
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(h2hbaseb_state::write_r)
|
||||
@ -758,7 +997,7 @@ static INPUT_PORTS_START( h2hbaseb )
|
||||
|
||||
PORT_START("IN.3") // R7
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Curve") // these two buttons appear twice on the board
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Fast Pitch")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Fast Pitch") // "
|
||||
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN.4") // Vss!
|
||||
@ -811,123 +1050,6 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Coleco Head to Head Football
|
||||
* TMS1100NLLE (rev. E!) MP3460 (die labeled MP3460)
|
||||
* 2*SN75492N LED display drivers, 9-digit LED grid, 1bit sound
|
||||
|
||||
LED electronic football game. To distinguish between offense and defense,
|
||||
offense blips (should) appear brighter.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class h2hfootb_state : public hh_tms1k_state
|
||||
{
|
||||
public:
|
||||
h2hfootb_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void h2hfootb_state::prepare_display()
|
||||
{
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask));
|
||||
display_matrix_seg(9, 9, m_o | (m_r >> 1 & 0x100), (m_r & 0x1ff), 0x7f);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(h2hfootb_state::write_r)
|
||||
{
|
||||
// R10: speaker out
|
||||
m_speaker->level_w(data >> 10 & 1);
|
||||
|
||||
// R0-R8: input mux
|
||||
m_inp_mux = data & 0x1ff;
|
||||
|
||||
// R0-R8: select led
|
||||
// R9: led between digits
|
||||
m_r = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(h2hfootb_state::write_o)
|
||||
{
|
||||
// O0-O7: digit segments A-G,A'
|
||||
m_o = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(h2hfootb_state::read_k)
|
||||
{
|
||||
// K: multiplexed inputs
|
||||
UINT8 k = 0;
|
||||
|
||||
// compared to the usual setup, the button matrix is rotated
|
||||
for (int i = 0; i < 4; i++)
|
||||
if (m_inp_matrix[i]->read() & m_inp_mux)
|
||||
k |= 1 << i;
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( h2hfootb )
|
||||
PORT_START("IN.0") // K1
|
||||
PORT_CONFNAME( 0x03, 0x01, "Players" )
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
|
||||
PORT_START("IN.1") // K2
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_TOGGLE PORT_NAME("P1 Play Selector") // pass
|
||||
PORT_BIT( 0x02, 0x02, IPT_SPECIAL ) PORT_CONDITION("IN.1", 0x01, EQUALS, 0x00) // run/kick
|
||||
|
||||
PORT_START("IN.2") // K4
|
||||
PORT_CONFNAME( 0x03, 0x01, "Skill Level" )
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
|
||||
PORT_START("IN.3") // K8
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Left/Right")
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Kick/Pass")
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Display")
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( h2hfootb, h2hfootb_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1100, 325000) // approximation - RC osc. R=39K, C=100pf, but unknown RC curve
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(h2hfootb_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(h2hfootb_state, write_r))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(h2hfootb_state, write_o))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_h2hfootb)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Coleco Total Control 4
|
||||
@ -4532,14 +4654,14 @@ ROM_START( amaztron )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( h2hbaseb )
|
||||
ROM_START( cqback )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) )
|
||||
ROM_LOAD( "mp3415.u4", 0x0000, 0x0800, CRC(65ebdabf) SHA1(9b5cf5adaf9132ced87f611ae8c3148b9b62ba89) )
|
||||
|
||||
ROM_REGION( 867, "maincpu:mpla", 0 )
|
||||
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
|
||||
ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
|
||||
ROM_REGION( 365, "maincpu:opla", 0 )
|
||||
ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
|
||||
ROM_LOAD( "tms1100_cqback_output.pla", 0, 365, CRC(c6dcbfd0) SHA1(593b6b7de981a28d1b4a33336b39df92d02ed4f4) )
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -4554,6 +4676,17 @@ ROM_START( h2hfootb )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( h2hbaseb )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) )
|
||||
|
||||
ROM_REGION( 867, "maincpu:mpla", 0 )
|
||||
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
|
||||
ROM_REGION( 365, "maincpu:opla", 0 )
|
||||
ROM_LOAD( "tms1100_h2hbaseb_output.pla", 0, 365, CRC(cb3d7e38) SHA1(6ab4a7c52e6010b7c7158463cb499973e52ff556) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( tc4 )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) )
|
||||
@ -4896,8 +5029,9 @@ ROM_END
|
||||
COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
|
||||
|
||||
CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE )
|
||||
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( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -63,8 +63,8 @@ public:
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
void set_display_size(int maxx, int maxy);
|
||||
void set_display_segmask(UINT32 digits, UINT32 mask);
|
||||
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
|
||||
void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
|
||||
|
||||
bool m_power_on;
|
||||
UINT8 m_inp_mux;
|
||||
@ -101,7 +101,7 @@ void k28_state::machine_start()
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, ~0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
|
||||
memset(m_display_segmask, 0, sizeof(m_display_segmask));
|
||||
|
||||
m_power_on = false;
|
||||
m_inp_mux = 0;
|
||||
@ -237,6 +237,17 @@ void k28_state::set_display_size(int maxx, int maxy)
|
||||
m_display_maxy = maxy;
|
||||
}
|
||||
|
||||
void k28_state::set_display_segmask(UINT32 digits, UINT32 mask)
|
||||
{
|
||||
// set a segment mask per selected digit, but leave unselected ones alone
|
||||
for (int i = 0; i < 0x20; i++)
|
||||
{
|
||||
if (digits & 1)
|
||||
m_display_segmask[i] = mask;
|
||||
digits >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void k28_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
|
||||
{
|
||||
set_display_size(maxx, maxy);
|
||||
@ -249,15 +260,6 @@ void k28_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
|
||||
display_update();
|
||||
}
|
||||
|
||||
void k28_state::display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask)
|
||||
{
|
||||
// expects m_display_segmask to be not-0
|
||||
for (int y = 0; y < maxy; y++)
|
||||
m_display_segmask[y] &= segmask;
|
||||
|
||||
display_matrix(maxx, maxy, setx, sety);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -356,7 +358,8 @@ WRITE8_MEMBER(k28_state::mcu_prog_w)
|
||||
|
||||
// output 16-24: digit select
|
||||
UINT16 digit_sel = (UINT16)(m_vfd_shiftreg >> 10) & 0x1ff;
|
||||
display_matrix_seg(16, 9, seg_data, digit_sel, 0x3fff);
|
||||
set_display_segmask(0x1ff, 0x3fff);
|
||||
display_matrix(16, 9, seg_data, digit_sel);
|
||||
|
||||
// output 25: power-off request on falling edge
|
||||
if (~m_vfd_shiftreg & m_vfd_shiftreg_out & 0x200)
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
bool m_power_led;
|
||||
|
||||
UINT8 read_inputs(int columns);
|
||||
UINT8 read_rotated_inputs(int columns, UINT8 rowmask = 0xf);
|
||||
virtual DECLARE_INPUT_CHANGED_MEMBER(power_button);
|
||||
virtual DECLARE_WRITE_LINE_MEMBER(auto_power_off);
|
||||
|
||||
|
178
src/mame/layout/cqback.lay
Normal file
178
src/mame/layout/cqback.lay
Normal file
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="static_white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
|
||||
<element name="static_green"><rect><color red="0.1" green="0.5" blue="0.2" /></rect></element>
|
||||
<element name="static_orange"><rect><color red="0.8" green="0.25" blue="0.1" /></rect></element>
|
||||
|
||||
<element name="text_down">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="DOWN"><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
<element name="text_home">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="HOME"><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
<element name="text_yards">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="YARDS TO GO"><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
<element name="text_time">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="TIME REMAINING"><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
<element name="text_field">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="FIELD POS."><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
<element name="text_visitor">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="VISITOR"><color red="0.8" green="0.25" blue="0.1" /></text>
|
||||
</element>
|
||||
|
||||
<element name="text_p1">
|
||||
<rect><color red="0.06" green="0.3" blue="0.12" /></rect>
|
||||
<text string="PL SEL:">
|
||||
<bounds x="0.0" y="0.17" width="1.0" height="0.6" />
|
||||
<color red="0.7" green="0.7" blue="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_p2" defstate="0">
|
||||
<rect><color red="0.06" green="0.3" blue="0.12" /></rect>
|
||||
<text state="0" string="RUN/KICK">
|
||||
<bounds x="0.0" y="0.17" width="1.0" height="0.6" />
|
||||
<color red="0.82" green="0.82" blue="0.82" />
|
||||
</text>
|
||||
<text state="1" string="PASS">
|
||||
<bounds x="0.0" y="0.17" width="1.0" height="0.6" />
|
||||
<color red="0.82" green="0.82" blue="0.82" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg><color red="1.0" green="0.25" blue="0.26" /></led7seg>
|
||||
</element>
|
||||
<element name="seg" defstate="0">
|
||||
<rect state="0"><color red="0.13" green="0.0325" blue="0.0338" /></rect>
|
||||
<rect state="1"><color red="1.0" green="0.25" blue="0.26" /></rect>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="-9" right="393" top="-130" bottom="156" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="-9" right="393" top="-130" bottom="156" />
|
||||
</bezel>
|
||||
|
||||
<!-- bezel -->
|
||||
|
||||
<bezel element="static_white"><bounds left="-9" right="393" top="-130" bottom="-60" /></bezel>
|
||||
<bezel element="static_green"><bounds left="-9" right="393" top="111" bottom="156" /></bezel>
|
||||
|
||||
<bezel element="text_down"><bounds x="-5" y="-126" width="86" height="19" /></bezel>
|
||||
<bezel element="text_yards"><bounds x="107" y="-126" width="170" height="19" /></bezel>
|
||||
<bezel element="text_field"><bounds x="301" y="-126" width="90" height="19" /></bezel>
|
||||
|
||||
<bezel element="text_home"><bounds x="-5" y="-92" width="86" height="19" /></bezel>
|
||||
<bezel element="text_time"><bounds x="107" y="-92" width="170" height="19" /></bezel>
|
||||
<bezel element="text_visitor"><bounds x="301" y="-92" width="90" height="19" /></bezel>
|
||||
|
||||
<bezel element="text_p1"><bounds x="301" y="130" width="40" height="16" /></bezel>
|
||||
<bezel element="text_p2" inputtag="IN.1" inputmask="0x01">
|
||||
<bounds x="339" y="130" width="50" height="16" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_orange"><bounds left="-9" right="393" top="-102" bottom="-96" /></bezel>
|
||||
<bezel element="static_white"><bounds left="-9" right="393" top="-61" bottom="-51" /></bezel>
|
||||
<bezel element="static_green"><bounds left="-9" right="393" top="-67" bottom="-61" /></bezel>
|
||||
<bezel element="static_white"><bounds left="-9" right="393" top="110" bottom="120" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="-9" y="-52" width="4" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="37" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="81" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="125" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="169" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="213" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="257" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="301" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="345" y="-52" width="2" height="163" /></bezel>
|
||||
<bezel element="static_white"><bounds x="389" y="-52" width="4" height="163" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="36" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="36" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="36" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="80" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="80" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="80" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="124" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="124" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="124" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="168" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="168" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="168" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="212" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="212" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="212" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="256" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="256" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="256" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="300" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="300" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="300" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="344" y="2" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="344" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="344" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
<!-- leds -->
|
||||
|
||||
<bezel name="digit0" element="digit"><bounds x="3" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="0.8" element="seg"><bounds x="7" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="0.9" element="seg"><bounds x="7" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit1" element="digit"><bounds x="47" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="1.8" element="seg"><bounds x="51" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="1.9" element="seg"><bounds x="51" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit2" element="digit"><bounds x="91" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="2.8" element="seg"><bounds x="95" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="2.9" element="seg"><bounds x="95" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit3" element="digit"><bounds x="135" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="3.8" element="seg"><bounds x="139" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="3.9" element="seg"><bounds x="139" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit4" element="digit"><bounds x="179" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="4.8" element="seg"><bounds x="183" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="4.9" element="seg"><bounds x="183" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit5" element="digit"><bounds x="223" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="5.8" element="seg"><bounds x="227" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="5.9" element="seg"><bounds x="227" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit6" element="digit"><bounds x="267" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="6.8" element="seg"><bounds x="271" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="6.9" element="seg"><bounds x="271" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit7" element="digit"><bounds x="311" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="7.8" element="seg"><bounds x="315" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="7.9" element="seg"><bounds x="315" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
<bezel name="digit8" element="digit"><bounds x="355" y="-15.5" width="24" height="32" /></bezel>
|
||||
<bezel name="8.8" element="seg"><bounds x="359" y="42.5" width="15" height="3" /></bezel>
|
||||
<bezel name="8.9" element="seg"><bounds x="359" y="71.5" width="15" height="3" /></bezel>
|
||||
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -34,7 +34,7 @@
|
||||
|
||||
<element name="text_p1">
|
||||
<rect><color red="0.24" green="0.4" blue="0.24" /></rect>
|
||||
<text string="P1 SEL:">
|
||||
<text string="PL SEL:">
|
||||
<bounds x="0.0" y="0.17" width="1.0" height="0.6" />
|
||||
<color red="0.7" green="0.7" blue="0.8" />
|
||||
</text>
|
||||
@ -139,7 +139,6 @@
|
||||
<bezel element="static_white"><bounds x="344" y="29" width="4" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="344" y="56" width="4" height="1" /></bezel>
|
||||
|
||||
|
||||
<!-- leds -->
|
||||
|
||||
<bezel name="0.5" element="seg"><bounds x="0" y="0" width="5" height="20" /></bezel>
|
||||
|
@ -2283,6 +2283,7 @@ gnwmndon // Nintendo
|
||||
// hh_tms1k
|
||||
mathmagi // APF
|
||||
amaztron // Coleco
|
||||
cqback // Coleco
|
||||
h2hbaseb // Coleco
|
||||
h2hfootb // Coleco
|
||||
tc4 // Coleco
|
||||
|
Loading…
Reference in New Issue
Block a user