mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
Machines promoted to working
---------------------------- Electronic Master Mind (Invicta) [hap, Sean Riddle]
This commit is contained in:
parent
444470572b
commit
80b5354f82
@ -5,15 +5,11 @@
|
||||
|
||||
Rockwell PPS-4/1 MCU series handhelds
|
||||
|
||||
TODO:
|
||||
- WIP
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/pps41/mm75.h"
|
||||
#include "cpu/pps41/mm76.h"
|
||||
#include "video/pwm.h"
|
||||
#include "sound/spkrdev.h"
|
||||
#include "speaker.h"
|
||||
@ -39,12 +35,13 @@ public:
|
||||
required_device<pps41_base_device> m_maincpu;
|
||||
optional_device<pwm_display_device> m_display;
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
optional_ioport_array<8> m_inputs; // max 8
|
||||
optional_ioport_array<4> m_inputs; // max 4
|
||||
|
||||
u16 m_inp_mux = 0;
|
||||
|
||||
// MCU output pin state
|
||||
//..
|
||||
u16 m_d = 0;
|
||||
u8 m_r = ~0;
|
||||
|
||||
u8 read_inputs(int columns);
|
||||
|
||||
@ -60,6 +57,8 @@ void hh_pps41_state::machine_start()
|
||||
{
|
||||
// register for savestates
|
||||
save_item(NAME(m_inp_mux));
|
||||
save_item(NAME(m_d));
|
||||
save_item(NAME(m_r));
|
||||
}
|
||||
|
||||
void hh_pps41_state::machine_reset()
|
||||
@ -101,7 +100,8 @@ namespace {
|
||||
/***************************************************************************
|
||||
|
||||
Invicta Electronic Master Mind
|
||||
* x
|
||||
* MM75 MCU (label MM75 A7525-11, die label A7525)
|
||||
* 9-digit 7seg VFD display (Futaba 9-ST)
|
||||
|
||||
Invicta is the owner of the Mastermind game rights. The back of the unit
|
||||
says (C) 1977, but this electronic handheld version came out in 1979.
|
||||
@ -115,24 +115,80 @@ public:
|
||||
hh_pps41_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void update_display();
|
||||
void write_d(u16 data);
|
||||
void write_r(u8 data);
|
||||
u8 read_p();
|
||||
void mastmind(machine_config &config);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void mastmind_state::update_display()
|
||||
{
|
||||
m_display->matrix(m_inp_mux, ~m_r);
|
||||
}
|
||||
|
||||
void mastmind_state::write_d(u16 data)
|
||||
{
|
||||
// DIO0-DIO7: digit select (DIO7 N/C on mastmind)
|
||||
// DIO0-DIO3: input mux
|
||||
m_inp_mux = data;
|
||||
update_display();
|
||||
}
|
||||
|
||||
void mastmind_state::write_r(u8 data)
|
||||
{
|
||||
// RIO1-RIO7: digit segment data
|
||||
m_r = data;
|
||||
update_display();
|
||||
}
|
||||
|
||||
u8 mastmind_state::read_p()
|
||||
{
|
||||
// PI1-PI4: multiplexed inputs
|
||||
return ~read_inputs(4);
|
||||
}
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( mastmind )
|
||||
PORT_START("IN.0") // DIO0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Try")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Fail")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // display test?
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN.1") // DIO1
|
||||
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_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
|
||||
|
||||
PORT_START("IN.2") // DIO2
|
||||
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_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
|
||||
|
||||
PORT_START("IN.3") // DIO3
|
||||
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_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void mastmind_state::mastmind(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MM75(config, m_maincpu, 100000); // approximation
|
||||
m_maincpu->write_d().set(FUNC(mastmind_state::write_d));
|
||||
m_maincpu->write_r().set(FUNC(mastmind_state::write_r));
|
||||
m_maincpu->read_p().set(FUNC(mastmind_state::read_p));
|
||||
|
||||
/* video hardware */
|
||||
PWM_DISPLAY(config, m_display).set_size(4, 8);
|
||||
m_display->set_segmask(3, 0xff);
|
||||
PWM_DISPLAY(config, m_display).set_size(7, 7);
|
||||
m_display->set_segmask(0x7f, 0x7f);
|
||||
config.set_default_layout(layout_mastmind);
|
||||
|
||||
/* no sound! */
|
||||
@ -146,7 +202,7 @@ ROM_START( mastmind )
|
||||
ROM_CONTINUE( 0x0380, 0x0080 )
|
||||
|
||||
ROM_REGION( 314, "maincpu:opla", 0 )
|
||||
ROM_LOAD( "mm76_mastmind_output.pla", 0, 314, CRC(84a3a6f2) SHA1(a3baf9a174a02d186769a1a2d81982e6dbdcf1ed) )
|
||||
ROM_LOAD( "mm76_mastmind_output.pla", 0, 314, CRC(c936aee7) SHA1(e9ec08a82493d6b63e936f82deeab3e4449b54c3) )
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -160,4 +216,4 @@ ROM_END
|
||||
***************************************************************************/
|
||||
|
||||
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
CONS( 1979, mastmind, 0, 0, mastmind, mastmind, mastmind_state, empty_init, "Invicta Plastics", "Electronic Master Mind (Invicta)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
|
||||
CONS( 1979, mastmind, 0, 0, mastmind, mastmind, mastmind_state, empty_init, "Invicta Plastics", "Electronic Master Mind (Invicta)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
|
||||
|
Loading…
Reference in New Issue
Block a user