summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/neogeo_ctrl/mahjong.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/neogeo_ctrl/mahjong.cpp')
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.cpp56
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);
}