diff options
Diffstat (limited to 'src/devices/bus/neogeo_ctrl/mahjong.cpp')
-rw-r--r-- | src/devices/bus/neogeo_ctrl/mahjong.cpp | 56 |
1 files changed, 17 insertions, 39 deletions
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.cpp b/src/devices/bus/neogeo_ctrl/mahjong.cpp index 9c818abf4b3..7bb111f4779 100644 --- a/src/devices/bus/neogeo_ctrl/mahjong.cpp +++ b/src/devices/bus/neogeo_ctrl/mahjong.cpp @@ -9,6 +9,7 @@ #include "emu.h" #include "mahjong.h" + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** @@ -26,7 +27,7 @@ static INPUT_PORTS_START( neogeo_mj_ac ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("MJ.1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_H ) @@ -36,28 +37,15 @@ static INPUT_PORTS_START( neogeo_mj_ac ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_N ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) - // is this actually connected? PORT_START("MJ.2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) - - PORT_START("MJ.3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -65,8 +53,9 @@ static INPUT_PORTS_START( neogeo_mj ) PORT_INCLUDE( neogeo_mj_ac ) PORT_START("START_SELECT") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -97,6 +86,7 @@ ioport_constructor neogeo_mjctrl_device::device_input_ports() const neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_neogeo_control_port_interface(mconfig, *this) + , m_ctrl_sel(0x00) , m_mjpanel(*this, "MJ.%u", 0) { } @@ -124,31 +114,19 @@ void neogeo_mjctrl_ac_device::device_start() //------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void neogeo_mjctrl_ac_device::device_reset() -{ - m_ctrl_sel = 0; -} - - -//------------------------------------------------- // read_ctrl //------------------------------------------------- uint8_t neogeo_mjctrl_ac_device::read_ctrl() { - uint8_t res = 0; - switch (m_ctrl_sel) - { - default: - case 0x00: res = 0xff; break; - case 0x09: res = m_mjpanel[0]->read(); break; - case 0x12: res = m_mjpanel[1]->read(); break; - case 0x1b: res = m_mjpanel[2]->read(); break; - case 0x24: res = m_mjpanel[3]->read(); break; - } + uint8_t res(0xff); + + if (BIT(m_ctrl_sel, 0)) + res &= m_mjpanel[0]->read(); + if (BIT(m_ctrl_sel, 1)) + res &= m_mjpanel[1]->read(); + if (BIT(m_ctrl_sel, 2)) + res &= m_mjpanel[2]->read(); return res; } @@ -168,5 +146,5 @@ void neogeo_mjctrl_ac_device::write_ctrlsel(uint8_t data) uint8_t neogeo_mjctrl_device::read_start_sel() { - return m_ss->read(); + return m_ss->read() & (BIT(m_ctrl_sel, 2) ? 0xfd : 0xff); } |