mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
New working machine added
-------- Toytronic Football (2 versions) [hap, Sean Riddle]
This commit is contained in:
parent
f33e0ca126
commit
cf6de9abb0
@ -9,8 +9,8 @@
|
||||
serial device etc.
|
||||
-----------------------------------------------------------
|
||||
*020 1650 19??, GI Economega IV TV PPL Tuning System Control
|
||||
*024 1655 1979, Toytronic? Football (have dump)
|
||||
*033 1655A 1979, Toytronic Football (have dump)
|
||||
@024 1655 1979, Toytronic? Football
|
||||
@033 1655A 1979, Toytronic Football
|
||||
@036 1655A 1979, Ideal Maniac
|
||||
*043 1655A 1979, Calfax/Caprice Pro-Action Baseball (have dump)
|
||||
*051 1655A 1979, U.S. Games Basketball/Tandy Electronic Basketball (have dump)
|
||||
@ -51,6 +51,7 @@
|
||||
#include "melodym.lh" // clickable
|
||||
#include "rockpin.lh"
|
||||
#include "touchme.lh" // clickable
|
||||
#include "ttfball.lh"
|
||||
|
||||
//#include "hh_pic16_test.lh" // common test-layout - use external artwork
|
||||
|
||||
@ -990,6 +991,154 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Toytronic Football
|
||||
* PIC1655-024 or PIC1655A-033
|
||||
* 4511 7seg decoder, 7 7seg LEDs + 27 other LEDs, 1-bit sound
|
||||
|
||||
Hello and welcome to another Mattel Football clone, there are so many of these.
|
||||
The PIC1655-024 one came from an unbranded handheld, but comparison suggests
|
||||
that it's the 'prequel' of PIC1655A-033.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class ttfball_state : public hh_pic16_state
|
||||
{
|
||||
public:
|
||||
ttfball_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_pic16_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_READ8_MEMBER(read_a);
|
||||
DECLARE_WRITE8_MEMBER(write_b);
|
||||
DECLARE_WRITE8_MEMBER(write_c);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void ttfball_state::prepare_display()
|
||||
{
|
||||
// C0-C2: led data
|
||||
// C0-C3: 4511 A-D, C4: digit segment DP
|
||||
// C5: select digits or led matrix
|
||||
const u8 _4511_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0,0,0,0,0,0 };
|
||||
u16 led_data = (m_c & 0x20) ? (_4511_map[m_c & 0xf] | (~m_c << 3 & 0x80)) : (~m_c << 8 & 0x700);
|
||||
|
||||
set_display_segmask(0x7f, 0xff);
|
||||
display_matrix(11, 9, led_data, m_b | (m_c << 1 & 0x100));
|
||||
}
|
||||
|
||||
READ8_MEMBER(ttfball_state::read_a)
|
||||
{
|
||||
// A3: multiplexed inputs, A0-A2: other inputs
|
||||
return m_inp_matrix[5]->read() | read_inputs(5);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ttfball_state::write_b)
|
||||
{
|
||||
// B0: RTCC pin
|
||||
m_maincpu->set_input_line(PIC16C5x_RTCC, data & 1);
|
||||
|
||||
// B0,B1,B3,B7: input mux low
|
||||
m_inp_mux = (m_inp_mux & 0x10) | (~data & 3) | (~data >> 1 & 4) | (~data >> 4 & 8);
|
||||
|
||||
// B0-B7: led select
|
||||
m_b = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ttfball_state::write_c)
|
||||
{
|
||||
// C6: speaker out
|
||||
m_speaker->level_w(data >> 6 & 1);
|
||||
|
||||
// C7: input mux high
|
||||
m_inp_mux = (m_inp_mux & 0xf) | (data >> 3 & 0x10);
|
||||
|
||||
// C0-C7: led data/select, 4511
|
||||
m_c = data;
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( ttfball )
|
||||
PORT_START("IN.0") // B0 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.1") // B1 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.2") // B3 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.3") // B7 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.4") // C7 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Kick")
|
||||
|
||||
PORT_START("IN.5") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Status")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Score")
|
||||
PORT_CONFNAME( 0x04, 0x04, "Skill Level" )
|
||||
PORT_CONFSETTING( 0x04, "1" )
|
||||
PORT_CONFSETTING( 0x00, "2" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( ttfballa )
|
||||
PORT_START("IN.0") // B0 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Kick")
|
||||
|
||||
PORT_START("IN.1") // B1 port A3
|
||||
PORT_BIT( 0x08, 0x08, IPT_SPECIAL ) PORT_CONDITION("FAKE", 0x03, EQUALS, 0x00) // left/right
|
||||
|
||||
PORT_START("IN.2") // B3 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.3") // B7 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY
|
||||
|
||||
PORT_START("IN.4") // C7 port A3
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN.5") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Status")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Score")
|
||||
PORT_CONFNAME( 0x04, 0x04, "Skill Level" )
|
||||
PORT_CONFSETTING( 0x04, "1" )
|
||||
PORT_CONFSETTING( 0x00, "2" )
|
||||
|
||||
PORT_START("FAKE") // fake port for left/right combination
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( ttfball, ttfball_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation - RC osc. R=27K or 33K, C=68pF
|
||||
MCFG_PIC16C5x_READ_A_CB(READ8(ttfball_state, read_a))
|
||||
MCFG_PIC16C5x_WRITE_B_CB(WRITE8(ttfball_state, write_b))
|
||||
MCFG_PIC16C5x_READ_C_CB(CONSTANT(0xff))
|
||||
MCFG_PIC16C5x_WRITE_C_CB(WRITE8(ttfball_state, write_c))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_ttfball)
|
||||
|
||||
/* 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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
@ -1032,6 +1181,17 @@ ROM_START( hccbaskb )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( ttfball )
|
||||
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||
ROM_LOAD( "pic1655a-033", 0x0000, 0x0400, CRC(2b500501) SHA1(f7fe464663c56e2181a31a1dc5f1f5239df57bed) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ttfballa )
|
||||
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||
ROM_LOAD( "pic1655-024", 0x0000, 0x0400, CRC(9091102f) SHA1(ef72759f20b5a99e0366863caad1e26be114263f) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
CONS( 1979, touchme, 0, 0, touchme, touchme, driver_device, 0, "Atari", "Touch Me (handheld, Rev 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
@ -1044,3 +1204,6 @@ CONS( 1980, leboom, 0, 0, leboom, leboom, driver_device, 0, "Lakes
|
||||
|
||||
CONS( 1979, rockpin, 0, 0, rockpin, rockpin, driver_device, 0, "Tiger Electronics", "Rocket Pinball", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1979, hccbaskb, 0, 0, hccbaskb, hccbaskb, driver_device, 0, "Tiger Electronics", "Half Court Computer Basketball", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
CONS( 1979, ttfball, 0, 0, ttfball, ttfball, driver_device, 0, "Toytronic", "Football (Toytronic, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1979, ttfballa, ttfball, 0, ttfball, ttfballa, driver_device, 0, "Toytronic", "Football (Toytronic, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -55,11 +55,9 @@
|
||||
|
||||
<bezel name="digit7" element="digit"><bounds x="19.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit6" element="digit"><bounds x="35.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel element="digit"><bounds x="51.5" y="16.5" width="12" height="15" /></bezel> <!-- N/C or unpopulated -->
|
||||
<bezel name="digit5" element="digit"><bounds x="67.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit4" element="digit"><bounds x="83.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit3" element="digit"><bounds x="99.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel element="digit"><bounds x="115.5" y="16.5" width="12" height="15" /></bezel> <!-- N/C or unpopulated -->
|
||||
<bezel name="digit1" element="digit"><bounds x="131.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit0" element="digit"><bounds x="147.5" y="16.5" width="12" height="15" /></bezel>
|
||||
|
||||
|
139
src/mame/layout/ttfball.lay
Normal file
139
src/mame/layout/ttfball.lay
Normal file
@ -0,0 +1,139 @@
|
||||
<?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="text_down">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="DOWN"><color red="0.7" green="0.2" blue="0.3" /></text>
|
||||
</element>
|
||||
<element name="text_home">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="HOME"><color red="0.7" green="0.2" blue="0.3" /></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.7" green="0.2" blue="0.3" /></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.7" green="0.2" blue="0.3" /></text>
|
||||
</element>
|
||||
<element name="text_field">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="FIELD POSITION"><color red="0.7" green="0.2" blue="0.3" /></text>
|
||||
</element>
|
||||
<element name="text_visitor">
|
||||
<rect><color red="0.8" green="0.8" blue="0.8" /></rect>
|
||||
<text string="VISITOR"><color red="0.7" green="0.2" blue="0.3" /></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="0" right="183" top="-2" bottom="109" />
|
||||
|
||||
<bezel element="static_green"><bounds x="-1" y="-3" width="185" height="113" /></bezel>
|
||||
|
||||
<!-- score/status panel -->
|
||||
|
||||
<bezel element="static_white"><bounds x="2" y="0" width="179" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="4" y="11" width="175" height="26" /></bezel>
|
||||
|
||||
<bezel name="digit7" element="digit"><bounds x="19.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit6" element="digit"><bounds x="35.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit5" element="digit"><bounds x="67.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit4" element="digit"><bounds x="83.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit3" element="digit"><bounds x="99.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit1" element="digit"><bounds x="131.5" y="16.5" width="12" height="15" /></bezel>
|
||||
<bezel name="digit0" element="digit"><bounds x="147.5" y="16.5" width="12" height="15" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="58" y="1" width="2" height="46" /></bezel>
|
||||
<bezel element="static_white"><bounds x="123" y="1" width="2" height="46" /></bezel>
|
||||
|
||||
<bezel element="text_down"><bounds x="4" y="1" width="54" height="9" /></bezel>
|
||||
<bezel element="text_field"><bounds x="58" y="1" width="67" height="9" /></bezel>
|
||||
<bezel element="text_yards"><bounds x="124" y="1" width="56" height="9" /></bezel>
|
||||
|
||||
<bezel element="text_home"><bounds x="4" y="38" width="54" height="9" /></bezel>
|
||||
<bezel element="text_time"><bounds x="58" y="38" width="67" height="9" /></bezel>
|
||||
<bezel element="text_visitor"><bounds x="124" y="38" width="56" height="9" /></bezel>
|
||||
|
||||
<!-- playing field -->
|
||||
|
||||
<bezel element="static_white"><bounds x="-1" y="53" width="185" height="54" /></bezel>
|
||||
|
||||
<bezel element="static_black"><bounds x="2" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="22" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="42" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="62" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="82" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="102" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="122" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="142" y="55" width="19" height="50" /></bezel>
|
||||
<bezel element="static_black"><bounds x="162" y="55" width="19" height="50" /></bezel>
|
||||
|
||||
<bezel element="static_white"><bounds x="0" y="71" width="183" height="1" /></bezel>
|
||||
<bezel element="static_white"><bounds x="0" y="88" width="183" height="1" /></bezel>
|
||||
|
||||
<bezel element="static_black"><bounds x="3.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="23.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="43.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="63.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="83.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="103.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="123.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="143.5" y="56" width="16" height="48" /></bezel>
|
||||
<bezel element="static_black"><bounds x="163.5" y="56" width="16" height="48" /></bezel>
|
||||
|
||||
<bezel name="8.8" element="seg"><bounds x="7" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="8.9" element="seg"><bounds x="7" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="8.10" element="seg"><bounds x="7" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="7.8" element="seg"><bounds x="27" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="7.9" element="seg"><bounds x="27" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="7.10" element="seg"><bounds x="27" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="6.8" element="seg"><bounds x="47" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="6.9" element="seg"><bounds x="47" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="6.10" element="seg"><bounds x="47" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="5.8" element="seg"><bounds x="67" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="5.9" element="seg"><bounds x="67" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="5.10" element="seg"><bounds x="67" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="4.8" element="seg"><bounds x="87" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="4.9" element="seg"><bounds x="87" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="4.10" element="seg"><bounds x="87" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="3.8" element="seg"><bounds x="107" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="3.9" element="seg"><bounds x="107" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="3.10" element="seg"><bounds x="107" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="2.8" element="seg"><bounds x="127" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="2.9" element="seg"><bounds x="127" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="2.10" element="seg"><bounds x="127" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="1.8" element="seg"><bounds x="147" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="1.9" element="seg"><bounds x="147" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="1.10" element="seg"><bounds x="147" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
<bezel name="0.8" element="seg"><bounds x="167" y="62" width="9" height="2" /></bezel>
|
||||
<bezel name="0.9" element="seg"><bounds x="167" y="79" width="9" height="2" /></bezel>
|
||||
<bezel name="0.10" element="seg"><bounds x="167" y="96" width="9" height="2" /></bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -14321,6 +14321,8 @@ maniac // Ideal
|
||||
melodym // GAF
|
||||
rockpin // Tiger Electronics
|
||||
touchme // Atari
|
||||
ttfball // Toytronic
|
||||
ttfballa // Toytronic
|
||||
|
||||
@source:hh_sm510.cpp
|
||||
gnwmndon // Nintendo
|
||||
|
Loading…
Reference in New Issue
Block a user