mirror of
https://github.com/holub/mame
synced 2025-05-08 23:31:54 +03:00
New working machines
----------- Alphie - The Electronic Robot (patent) [hap]
This commit is contained in:
parent
4e4cd1bf04
commit
d27de747d3
@ -3498,7 +3498,7 @@ MACHINE_CONFIG_END
|
||||
/***************************************************************************
|
||||
|
||||
VTech Electronic Number Muncher
|
||||
* Sharp SM511 under epoxy (die label ?)
|
||||
* Sharp SM511 under epoxy (die label 772)
|
||||
* lcd screen with custom segments, 1-bit sound
|
||||
|
||||
***************************************************************************/
|
||||
@ -4020,10 +4020,10 @@ ROM_END
|
||||
|
||||
ROM_START( nummunch )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD( "nummunch.program", 0x0000, 0x1000, CRC(2f7ff516) SHA1(132e7c5c4d69170953b2e51731992d6d6ba829f9) )
|
||||
ROM_LOAD( "772.program", 0x0000, 0x1000, CRC(2f7ff516) SHA1(132e7c5c4d69170953b2e51731992d6d6ba829f9) )
|
||||
|
||||
ROM_REGION( 0x100, "maincpu:melody", 0 )
|
||||
ROM_LOAD( "nummunch.melody", 0x000, 0x100, CRC(96fe463a) SHA1(dcef5eee15a3f6d21e0db1b8ae3fbddc81633fc8) )
|
||||
ROM_LOAD( "772.melody", 0x000, 0x100, CRC(96fe463a) SHA1(dcef5eee15a3f6d21e0db1b8ae3fbddc81633fc8) )
|
||||
|
||||
ROM_REGION( 140664, "svg", 0)
|
||||
ROM_LOAD( "nummunch.svg", 0, 140664, CRC(879df7e2) SHA1(78d8500a445cbbea0090d4e97b781c1e4ed11dd3) )
|
||||
|
@ -158,6 +158,7 @@
|
||||
|
||||
// internal artwork
|
||||
#include "7in1ss.lh"
|
||||
#include "alphie.lh"
|
||||
#include "amaztron.lh" // clickable
|
||||
#include "arcmania.lh" // clickable
|
||||
#include "arrball.lh"
|
||||
@ -7525,6 +7526,128 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Playskool Alphie
|
||||
* TMS1000 (label not known yet)
|
||||
* 5 LEDs, 1-bit sound
|
||||
|
||||
This is an educational toy robot for young kids. It has 2 sliding arms:
|
||||
the left arm(Alphie's right arm) is for questions, the other for answers.
|
||||
Cardboard inlays are used for arm position labels.
|
||||
|
||||
There are 4 play modes:
|
||||
- S symbol: Alphie answers questions. The answers are always the same,
|
||||
no matter the inlay: Q1=A3, Q2=A5, Q3=A4, Q4=A1, Q5=A2.
|
||||
- * symbol: used with Lunar Landing board game
|
||||
- X symbol: used with Robot Land board game
|
||||
- music note: play a selection of 5 tunes
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
class alphie_state : public hh_tms1k_state
|
||||
{
|
||||
public:
|
||||
alphie_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(show_arm_position);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(alphie_state::show_arm_position)
|
||||
{
|
||||
// arm position 1(up) to 5(down)
|
||||
output().set_value("q_pos", 32 - count_leading_zeros(m_inp_matrix[1]->read()));
|
||||
output().set_value("a_pos", 32 - count_leading_zeros(m_inp_matrix[2]->read()));
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(alphie_state::write_r)
|
||||
{
|
||||
// R1-R5, input mux (using d5 for Vss)
|
||||
m_inp_mux = (data >> 1 & 0x1f) | 0x20;
|
||||
|
||||
// R6-R10: leds
|
||||
display_matrix(5, 1, data >> 6, 1);
|
||||
|
||||
// R0: power off on falling edge (turn back on with button)
|
||||
if (~data & m_r & 1)
|
||||
power_off();
|
||||
|
||||
m_r = data;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(alphie_state::write_o)
|
||||
{
|
||||
// O?: speaker out
|
||||
m_speaker->level_w(data & 1);
|
||||
}
|
||||
|
||||
READ8_MEMBER(alphie_state::read_k)
|
||||
{
|
||||
// K: multiplexed inputs, rotated matrix
|
||||
return read_rotated_inputs(6);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static const ioport_value alphie_armpos_table[5] = { 0x01, 0x02, 0x04, 0x08, 0x10 };
|
||||
|
||||
static INPUT_PORTS_START( alphie )
|
||||
PORT_START("IN.0") // K1
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
|
||||
PORT_START("IN.1") // K2
|
||||
PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_PLAYER(2) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Question Arm")
|
||||
|
||||
PORT_START("IN.2") // K4
|
||||
PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Answer Arm")
|
||||
|
||||
PORT_START("IN.3") // K8
|
||||
PORT_CONFNAME( 0x0f, 0x01, "Activity" )
|
||||
PORT_CONFSETTING( 0x01, "Questions" )
|
||||
PORT_CONFSETTING( 0x02, "Lunar Landing" )
|
||||
PORT_CONFSETTING( 0x04, "Robot Land" )
|
||||
PORT_CONFSETTING( 0x08, "Tunes" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
// output PLA is guessed
|
||||
static const u16 alphie_output_pla[0x20] =
|
||||
{
|
||||
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
|
||||
0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( alphie )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1000, 350000) // approximation
|
||||
MCFG_TMS1XXX_OUTPUT_PLA(alphie_output_pla)
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(alphie_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(alphie_state, write_r))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(alphie_state, write_o))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("arm_position", alphie_state, show_arm_position, attotime::from_msec(50))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_alphie)
|
||||
|
||||
/* 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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Tandy Radio Shack Championship Football (model 60-2150)
|
||||
@ -9776,6 +9899,17 @@ ROM_START( lostreas )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( alphie )
|
||||
ROM_REGION( 0x0400, "maincpu", 0 )
|
||||
ROM_LOAD( "us4280809", 0x0000, 0x0400, CRC(f8f14013) SHA1(bf31b929fcbcb189bbe4623104e1da0a639b5954) ) // from patent US4280809, should be good
|
||||
|
||||
ROM_REGION( 867, "maincpu:mpla", 0 )
|
||||
ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // not in patent description
|
||||
ROM_REGION( 365, "maincpu:opla", 0 )
|
||||
ROM_LOAD( "tms1000_alphie_output.pla", 0, 365, NO_DUMP ) // "
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( tcfball )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "mp1193", 0x0000, 0x0800, CRC(7d9f446f) SHA1(bb6af47b42d989494f21475a73f072cddf58c99f) )
|
||||
@ -9994,6 +10128,8 @@ CONS( 1980, splitsec, 0, 0, splitsec, splitsec, splitsec_state, 0,
|
||||
CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, mmerlin_state, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1982, lostreas, 0, 0, lostreas, lostreas, lostreas_state, 0, "Parker Brothers", "Lost Treasure - The Electronic Deep-Sea Diving Game (Electronic Dive-Control Center)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // ***
|
||||
|
||||
CONS( 1978, alphie, 0, 0, alphie, alphie, alphie_state, 0, "Playskool", "Alphie - The Electronic Robot (patent)", MACHINE_SUPPORTS_SAVE ) // ***
|
||||
|
||||
CONS( 1980, tcfball, 0, 0, tcfball, tcfball, tcfball_state, 0, "Tandy Radio Shack", "Championship Football (model 60-2150)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1980, tcfballa, tcfball, 0, tcfballa, tcfballa, tcfballa_state, 0, "Tandy Radio Shack", "Championship Football (model 60-2151)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, tandy12_state, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
|
||||
|
53
src/mame/layout/alphie.lay
Normal file
53
src/mame/layout/alphie.lay
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_gray"><rect><color red="0.13" green="0.13" blue="0.13" /></rect></element>
|
||||
|
||||
<element name="led" defstate="0">
|
||||
<disk state="0"><color red="0.15" green="0.03" blue="0.035" /></disk>
|
||||
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
|
||||
</element>
|
||||
|
||||
<element name="text_1"><text string="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_2"><text string="2"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_3"><text string="3"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_4"><text string="4"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_5"><text string="5"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_q"><text string="Question:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
<element name="text_a"><text string="Answer:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
|
||||
|
||||
<element name="counter" defstate="1">
|
||||
<simplecounter maxstate="9" digits="1">
|
||||
<color red="0.95" green="0.95" blue="0.95" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="-1.5" right="17.5" top="-0.5" bottom="14.5" />
|
||||
|
||||
<bezel name="0.0" element="led"><bounds x="2" y="0" width="2" height="2" /></bezel>
|
||||
<bezel name="0.1" element="led"><bounds x="2" y="3" width="2" height="2" /></bezel>
|
||||
<bezel name="0.2" element="led"><bounds x="2" y="6" width="2" height="2" /></bezel>
|
||||
<bezel name="0.3" element="led"><bounds x="2" y="9" width="2" height="2" /></bezel>
|
||||
<bezel name="0.4" element="led"><bounds x="2" y="12" width="2" height="2" /></bezel>
|
||||
|
||||
<bezel element="text_1"><bounds x="-1" y="0" width="2" height="2" /></bezel>
|
||||
<bezel element="text_2"><bounds x="-1" y="3" width="2" height="2" /></bezel>
|
||||
<bezel element="text_3"><bounds x="-1" y="6" width="2" height="2" /></bezel>
|
||||
<bezel element="text_4"><bounds x="-1" y="9" width="2" height="2" /></bezel>
|
||||
<bezel element="text_5"><bounds x="-1" y="12" width="2" height="2" /></bezel>
|
||||
|
||||
<bezel element="static_gray"><bounds x="6" y="0.5" width="0.2" height="13" /></bezel>
|
||||
|
||||
<bezel element="text_q"><bounds x="8" y="0" width="10" height="2" /></bezel>
|
||||
<bezel element="text_a"><bounds x="8" y="3" width="10" height="2" /></bezel>
|
||||
<bezel name="q_pos" element="counter"><bounds x="15" y="0" width="2" height="2" /></bezel>
|
||||
<bezel name="a_pos" element="counter"><bounds x="15" y="3" width="2" height="2" /></bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -14777,6 +14777,7 @@ tswampt // Tiger
|
||||
|
||||
@source:hh_tms1k.cpp
|
||||
7in1ss // Tiger Electronics
|
||||
alphie // Playskool
|
||||
arcmania // Milton Bradley
|
||||
arrball // A-One LSI
|
||||
amaztron // Coleco
|
||||
|
Loading…
Reference in New Issue
Block a user