summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes_ctrl/konamihs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes_ctrl/konamihs.cpp')
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.cpp52
1 files changed, 17 insertions, 35 deletions
diff --git a/src/devices/bus/nes_ctrl/konamihs.cpp b/src/devices/bus/nes_ctrl/konamihs.cpp
index 9522f5e3c2b..d8d95c9bbd6 100644
--- a/src/devices/bus/nes_ctrl/konamihs.cpp
+++ b/src/devices/bus/nes_ctrl/konamihs.cpp
@@ -18,12 +18,12 @@ DEFINE_DEVICE_TYPE(NES_KONAMIHS, nes_konamihs_device, "nes_konamihs", "Konami Hy
static INPUT_PORTS_START( nes_konamihs )
PORT_START("P1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("PI Run")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("PI Jump")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("I Run")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("I Jump")
PORT_START("P2")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("PII Run")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("PII Jump")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("II Run")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("II Jump")
INPUT_PORTS_END
//-------------------------------------------------
@@ -43,13 +43,11 @@ ioport_constructor nes_konamihs_device::device_input_ports() const
// nes_konamihs_device - constructor
//-------------------------------------------------
-nes_konamihs_device::nes_konamihs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, NES_KONAMIHS, tag, owner, clock),
- device_nes_control_port_interface(mconfig, *this),
- m_ipt_p1(*this, "P1"),
- m_ipt_p2(*this, "P2"),
- m_latch_p1(0),
- m_latch_p2(0)
+nes_konamihs_device::nes_konamihs_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, NES_KONAMIHS, tag, owner, clock)
+ , device_nes_control_port_interface(mconfig, *this)
+ , m_ipt(*this, "P%u", 1)
+ , m_latch(0)
{
}
@@ -60,19 +58,7 @@ nes_konamihs_device::nes_konamihs_device(const machine_config &mconfig, const ch
void nes_konamihs_device::device_start()
{
- save_item(NAME(m_latch_p1));
- save_item(NAME(m_latch_p2));
-}
-
-
-//-------------------------------------------------
-// device_reset
-//-------------------------------------------------
-
-void nes_konamihs_device::device_reset()
-{
- m_latch_p1 = 0;
- m_latch_p2 = 0;
+ save_item(NAME(m_latch));
}
@@ -80,14 +66,13 @@ void nes_konamihs_device::device_reset()
// read
//-------------------------------------------------
-uint8_t nes_konamihs_device::read_exp(offs_t offset)
+u8 nes_konamihs_device::read_exp(offs_t offset)
{
- uint8_t ret = 0;
+ u8 ret = 0;
if (offset == 1) //$4017
- {
- ret |= m_latch_p1 << 1;
- ret |= m_latch_p2 << 3;
- }
+ for (int i = 0; i < 2; i++)
+ if (BIT(m_latch, i))
+ ret |= m_ipt[i]->read() << (2 * i + 1);
return ret;
}
@@ -95,10 +80,7 @@ uint8_t nes_konamihs_device::read_exp(offs_t offset)
// write
//-------------------------------------------------
-void nes_konamihs_device::write(uint8_t data)
+void nes_konamihs_device::write(u8 data)
{
- if ((data & 0x02) == 0)
- m_latch_p1 = m_ipt_p1->read();
- if ((data & 0x04) == 0)
- m_latch_p2 = m_ipt_p2->read();
+ m_latch = ~data >> 1;
}