From dc2df58645709206a64dd6fb1823130c088e5c68 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 23 Jul 2022 00:01:39 +0200 Subject: New working machines -------------------- Mr. Mus-I-Cal [hap, Sean Riddle] --- src/mame/handheld/hh_tms1k.cpp | 137 ++++++++++++++++++++++++++++++++++++++++- src/mame/layout/mathmagi.lay | 27 ++++---- src/mame/layout/mrmusical.lay | 75 ++++++++++++++++++++++ src/mame/layout/qkracer.lay | 19 +++--- src/mame/layout/qkracerm.lay | 19 +++--- src/mame/layout/qkspeller.lay | 10 +-- src/mame/layout/wizatron.lay | 21 +++---- src/mame/mame.lst | 1 + 8 files changed, 256 insertions(+), 53 deletions(-) create mode 100644 src/mame/layout/mrmusical.lay diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index 39d13f73686..1af77f63719 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -118,7 +118,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP3005 TMS1730 1989, Tiger Copy Cat (model 7-522) @MP3200 TMS1000 1978, Parker Brothers Electronic Master Mind @MP3201 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750A) - *MP3206 TMS1000 1979, Concept 2000 Mr. Mus-I-Cal + @MP3206 TMS1000 1978, Concept 2000 Mr. Mus-I-Cal @MP3208 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750B) @MP3226 TMS1000 1978, Milton Bradley Simon (Rev A) *MP3232 TMS1000 1979, Fonas 2 Player Baseball (no "MP" on chip label) @@ -270,6 +270,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "mmarvin.lh" // clickable #include "mmerlin.lh" // clickable #include "monkeysee.lh" +#include "mrmusical.lh" #include "palmf31.lh" #include "palmmd8.lh" #include "pbmastm.lh" @@ -2864,6 +2865,136 @@ ROM_END +/*************************************************************************** + + Concept 2000 Mr. Mus-I-Cal + * TMS1000NLL MP3206 (die label 1000C, MP3206) + * 9-digit 7seg LED display(one custom digit), 1-bit sound + +***************************************************************************/ + +class mrmusical_state : public hh_tms1k_state +{ +public: + mrmusical_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void mrmusical(machine_config &config); + +protected: + void update_display(); + virtual void write_o(u16 data); + virtual void write_r(u16 data); + virtual u8 read_k(); +}; + +// handlers + +void mrmusical_state::update_display() +{ + m_display->matrix(m_r, m_o); +} + +void mrmusical_state::write_r(u16 data) +{ + // R10: speaker out + m_speaker->level_w(BIT(data, 10)); + + // R0-R5: input mux + // R0-R8: digit select (R6 is a math symbol like with lilprof) + m_inp_mux = m_r = data; + update_display(); +} + +void mrmusical_state::write_o(u16 data) +{ + // O0-O7: digit segment data + m_o = data; + update_display(); +} + +u8 mrmusical_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(6); +} + +// config + +static INPUT_PORTS_START( mrmusical ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("A=") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C") + + PORT_START("IN.5") // R5 + PORT_CONFNAME( 0x01, 0x00, "Mode" ) + PORT_CONFSETTING( 0x01, "A" ) + PORT_CONFSETTING( 0x00, "=" ) +INPUT_PORTS_END + +void mrmusical_state::mrmusical(machine_config &config) +{ + // basic machine hardware + TMS1000(config, m_maincpu, 300000); // approximation - RC osc. R=33K, C=100pF + m_maincpu->k().set(FUNC(mrmusical_state::read_k)); + m_maincpu->o().set(FUNC(mrmusical_state::write_o)); + m_maincpu->r().set(FUNC(mrmusical_state::write_r)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(9, 8); + m_display->set_segmask(0x1ff, 0xff); + m_display->set_segmask(0x180, 0x7f); // no DP for leftmost 2 digits + config.set_default_layout(layout_mrmusical); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( mrmusical ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3206", 0x0000, 0x0400, CRC(15013d4d) SHA1(2bbc5599183381ad050b7518bca1babc579ee79d) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_mrmusical_output.pla", 0, 365, CRC(9652aa3b) SHA1(be41e1588561875b362ba878098ede8299792166) ) +ROM_END + + + + + /*************************************************************************** Conic Electronic Basketball @@ -7975,7 +8106,7 @@ INPUT_PORTS_END void simon_state::simon(machine_config &config) { // basic machine hardware - TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=33K, C=100pF + TMS1000(config, m_maincpu, 325000); // approximation - RC osc. R=33K, C=100pF m_maincpu->k().set(FUNC(simon_state::read_k)); m_maincpu->r().set(FUNC(simon_state::write_r)); @@ -14355,6 +14486,8 @@ CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, h2hboxing_state, emp CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, quizwizc_state, empty_init, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // *** CONS( 1981, tc4, 0, 0, tc4, tc4, tc4_state, empty_init, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +COMP( 1978, mrmusical, 0, 0, mrmusical, mrmusical, mrmusical_state, empty_init, "Concept 2000", "Mr. Mus-I-Cal", MACHINE_SUPPORTS_SAVE ) + CONS( 1979, cnbaskb, 0, 0, cnbaskb, cnbaskb, cnbaskb_state, empty_init, "Conic", "Electronic Basketball (Conic)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, cmsport, 0, 0, cmsport, cmsport, cmsport_state, empty_init, "Conic", "Electronic Multisport", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) CONS( 1979, cnfball, 0, 0, cnfball, cnfball, cnfball_state, empty_init, "Conic", "Electronic Football (Conic, TMS1000 version)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/mathmagi.lay b/src/mame/layout/mathmagi.lay index 85e41f33928..1c125ba05eb 100644 --- a/src/mame/layout/mathmagi.lay +++ b/src/mame/layout/mathmagi.lay @@ -9,24 +9,24 @@ license:CC0 - + - - + + - - + + - - + + - - + + @@ -62,8 +62,7 @@ license:CC0 - - + @@ -75,13 +74,11 @@ license:CC0 - - + - - + diff --git a/src/mame/layout/mrmusical.lay b/src/mame/layout/mrmusical.lay new file mode 100644 index 00000000000..4955145e02b --- /dev/null +++ b/src/mame/layout/mrmusical.lay @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/qkracer.lay b/src/mame/layout/qkracer.lay index 732393aa9a6..8545914d30e 100644 --- a/src/mame/layout/qkracer.lay +++ b/src/mame/layout/qkracer.lay @@ -4,23 +4,23 @@ license:CC0 --> - + - + - - + + - - + + - - + + @@ -32,7 +32,7 @@ license:CC0 - + @@ -50,7 +50,6 @@ license:CC0 - diff --git a/src/mame/layout/qkracerm.lay b/src/mame/layout/qkracerm.lay index 732393aa9a6..8545914d30e 100644 --- a/src/mame/layout/qkracerm.lay +++ b/src/mame/layout/qkracerm.lay @@ -4,23 +4,23 @@ license:CC0 --> - + - + - - + + - - + + - - + + @@ -32,7 +32,7 @@ license:CC0 - + @@ -50,7 +50,6 @@ license:CC0 - diff --git a/src/mame/layout/qkspeller.lay b/src/mame/layout/qkspeller.lay index 700301df324..92a0f17cd24 100644 --- a/src/mame/layout/qkspeller.lay +++ b/src/mame/layout/qkspeller.lay @@ -4,15 +4,15 @@ license:CC0 --> - + - + - - + + @@ -20,7 +20,7 @@ license:CC0 - + diff --git a/src/mame/layout/wizatron.lay b/src/mame/layout/wizatron.lay index 88671b90d55..db6aa1ace94 100644 --- a/src/mame/layout/wizatron.lay +++ b/src/mame/layout/wizatron.lay @@ -11,24 +11,24 @@ license:CC0 - + - - + + - - + + - - + + - - + + @@ -63,8 +63,7 @@ license:CC0 - - + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 68a96e07cb6..0ee46361713 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16830,6 +16830,7 @@ merlina // Parker Bros mmarvin // Entex mmerlin // Parker Bros monkeysee // Tandy Corporation +mrmusical // Concept 2000 palmf31 // Canon palmmd8 // Canon pbmastm // Parker Bros -- cgit v1.2.3