summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus
diff options
context:
space:
mode:
author 0kmg <9137159+0kmg@users.noreply.github.com>2021-12-21 10:21:56 -0900
committer GitHub <noreply@github.com>2021-12-21 14:21:56 -0500
commitd1e6531f50909b9442bc08611aadbf44a00a0560 (patch)
treef9439009200f53cc29be1b03cbd75325e4b0cf3c /src/devices/bus
parentc76d2b2cb13e7776bf31e8527018177e2d33bed1 (diff)
bus/nes_ctrl: Minor cleanup for Konami Hyper Shot controllers. (#9023)
Diffstat (limited to 'src/devices/bus')
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.cpp52
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.h13
2 files changed, 23 insertions, 42 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;
}
diff --git a/src/devices/bus/nes_ctrl/konamihs.h b/src/devices/bus/nes_ctrl/konamihs.h
index 4d8b480968b..252c1d9d07a 100644
--- a/src/devices/bus/nes_ctrl/konamihs.h
+++ b/src/devices/bus/nes_ctrl/konamihs.h
@@ -25,23 +25,22 @@ class nes_konamihs_device : public device_t,
{
public:
// construction/destruction
- nes_konamihs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_konamihs_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual ioport_constructor device_input_ports() const override;
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_reset() override;
- virtual uint8_t read_exp(offs_t offset) override;
- virtual void write(uint8_t data) override;
+ virtual u8 read_exp(offs_t offset) override;
+ virtual void write(u8 data) override;
- required_ioport m_ipt_p1;
- required_ioport m_ipt_p2;
- uint32_t m_latch_p1, m_latch_p2;
+ required_ioport_array<2> m_ipt;
+ u8 m_latch;
};
+
// device type definition
DECLARE_DEVICE_TYPE(NES_KONAMIHS, nes_konamihs_device)