From 80ef7056834e170114f29fb436d5fbeb2ed3e599 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 12 Aug 2024 00:12:28 +0200 Subject: =?UTF-8?q?New=20working=20systems=20-------------------=20Mega=20?= =?UTF-8?q?10.000:=20L'Encyclop=C3=A9die=20=C3=89lectronique=20[hap,=20Sea?= =?UTF-8?q?n=20Riddle]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mame/fidelity/eldorado.cpp | 2 +- src/mame/handheld/hh_tms1k.cpp | 136 ++++++++++++++++++++++++++++++++++++++++- src/mame/layout/mega10k.lay | 26 ++++++++ src/mame/mame.lst | 1 + 4 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 src/mame/layout/mega10k.lay diff --git a/src/mame/fidelity/eldorado.cpp b/src/mame/fidelity/eldorado.cpp index 7d9d67a7e56..09a0d45a3d2 100644 --- a/src/mame/fidelity/eldorado.cpp +++ b/src/mame/fidelity/eldorado.cpp @@ -191,7 +191,7 @@ void eldorado_state::eldorado(machine_config &config) ROM_START( feldo ) ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD("100-1027a01", 0x0000, 0x0800, CRC(3b93b6d2) SHA1(353a741624b4c7fd74a0cf601e2e52f9914b58b8) ) + ROM_LOAD("tmp80c49ap6-6744_100-1027a01", 0x0000, 0x0800, CRC(3b93b6d2) SHA1(353a741624b4c7fd74a0cf601e2e52f9914b58b8) ) ROM_END } // anonymous namespace diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index b5de9ee6cbe..ff426cd666c 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -148,7 +148,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP3300 TMS1000 1979, Milton Bradley Simon (Rev F) @MP3301A TMS1000 1979, Milton Bradley Big Trak *MP3310 TMS1000 1979, Texas Instruments OEM melody chip - *MP3312 TMS1000 1980, Nathan Mega 10000 + @MP3312 TMS1000 1980, Nathan Mega 10000 *MP3318 TMS1000 1979, Texas Instruments OEM melody chip @MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball @MP3321A TMS1000 1979, Coleco Head to Head: Electronic Hockey @@ -315,6 +315,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "mathmarv.lh" #include "mbdtower.lh" #include "mdndclab.lh" +#include "mega10k.lh" #include "merlin.lh" #include "mmarvin.lh" #include "mmerlin.lh" @@ -8037,6 +8038,137 @@ ROM_END +/******************************************************************************* + + Jeux Nathan Mega 10000 + * PCB label: MADE IN FRANCE, OD 1112A + * TMS1000ENLL MP3312 (die label: 1000E, MP3312) + * 9-digit 7seg LED display, 1-bit sound + + It's a quiz game/scorekeeper, it needs question books to play. It's a bit + cumbersome to play. To start, enter the book code, press R, then enter number + of players (0 or 1-4). Press Q and manually input a question number, press N + and enter the player number that will answer, press R, followed by the answer. + +*******************************************************************************/ + +class mega10k_state : public hh_tms1k_state +{ +public: + mega10k_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void mega10k(machine_config &config); + +private: + void write_r(u32 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void mega10k_state::write_r(u32 data) +{ + // R0-R6: digit segments + m_display->write_mx(data); + + // R7-R10: input mux + m_inp_mux = data >> 7 & 0xf; +} + +void mega10k_state::write_o(u16 data) +{ + // O0-O3: digit select + m_display->write_my(~data); + + // O5: speaker out + m_speaker->level_w(BIT(data, 5)); + + // O6: power off on falling edge + if (~data & m_o & 0x40) + power_off(); + m_o = data; +} + +u8 mega10k_state::read_k() +{ + // K: multiplexed inputs (note: the Vdd row is always on) + return m_inputs[4]->read() | read_inputs(4); +} + +// inputs + +static INPUT_PORTS_START( mega10k ) + PORT_START("IN.0") // R7 + 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_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("S") // score + + PORT_START("IN.1") // R8 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("R") // reponse (answer) + + PORT_START("IN.2") // R9 + 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_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Q") // question + + PORT_START("IN.3") // R10 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("N") // nombre (player#) + + PORT_START("IN.4") // Vdd + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true) +INPUT_PORTS_END + +// config + +void mega10k_state::mega10k(machine_config &config) +{ + // basic machine hardware + TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=33K, C=100pF + m_maincpu->read_k().set(FUNC(mega10k_state::read_k)); + m_maincpu->write_r().set(FUNC(mega10k_state::write_r)); + m_maincpu->write_o().set(FUNC(mega10k_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(4, 7); + m_display->set_segmask(0xf, 0x7f); + config.set_default_layout(layout_mega10k); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( mega10k ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3312", 0x0000, 0x0400, CRC(2949f6a7) SHA1(0ac5560213ed681150b8f198be09a8d4ec3a41c4) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_mega10k_output.pla", 0, 365, CRC(dbacff74) SHA1(30ba16c0ea955f1d1264157a26c3a7cf169a6983) ) +ROM_END + + + + + /******************************************************************************* Kosmos Astro @@ -17359,6 +17491,8 @@ SYST( 1979, starwbc, 0, 0, starwbc, starwbc, starwbc_state, SYST( 1979, starwbcp, starwbc, 0, starwbc, starwbc, starwbc_state, empty_init, "Kenner", "Star Wars: Electronic Battle Command Game (patent)", MACHINE_SUPPORTS_SAVE ) SYST( 1980, liveafb, 0, 0, liveafb, liveafb, liveafb_state, empty_init, "Kenner", "Live Action Football", MACHINE_SUPPORTS_SAVE ) +SYST( 1980, mega10k, 0, 0, mega10k, mega10k, mega10k_state, empty_init, "Jeux Nathan", u8"Mega 10.000: L'Encyclopédie Électronique", MACHINE_SUPPORTS_SAVE ) // *** + SYST( 1979, astro, 0, 0, astro, astro, astro_state, empty_init, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) SYST( 1980, strobe, 0, 0, strobe, strobe, strobe_state, empty_init, "Lakeside", "Strobe", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/mega10k.lay b/src/mame/layout/mega10k.lay new file mode 100644 index 00000000000..03761e00e73 --- /dev/null +++ b/src/mame/layout/mega10k.lay @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 8ee03bc4252..bb44d326a29 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19325,6 +19325,7 @@ mathmagi // APF mathmarv // Texas Instruments mbdtower // Milton Bradley mdndclab // Mattel +mega10k // Nathan merlin // Parker Bros mmarvin // Entex mmerlin // Parker Bros -- cgit v1.2.3