taitoio_yoke.cpp : Updates

Simplify handlers, Reduce runtime tag lookups
This commit is contained in:
cam900 2019-05-06 19:06:12 +09:00
parent 8b56e83362
commit e8c7efdc32
4 changed files with 35 additions and 27 deletions

View File

@ -483,19 +483,19 @@ WRITE16_MEMBER(mlanding_state::output_w)
READ16_MEMBER(mlanding_state::analog1_msb_r) READ16_MEMBER(mlanding_state::analog1_msb_r)
{ {
return (m_yoke->throttle_r(space,0) >> 4) & 0xff; return (m_yoke->throttle_r() >> 4) & 0xff;
} }
READ16_MEMBER(mlanding_state::analog2_msb_r) READ16_MEMBER(mlanding_state::analog2_msb_r)
{ {
return (m_yoke->stickx_r(space,0) >> 4) & 0xff; return (m_yoke->stickx_r() >> 4) & 0xff;
} }
READ16_MEMBER(mlanding_state::analog3_msb_r) READ16_MEMBER(mlanding_state::analog3_msb_r)
{ {
return (m_yoke->sticky_r(space,0) >> 4) & 0xff; return (m_yoke->sticky_r() >> 4) & 0xff;
} }
@ -509,7 +509,7 @@ READ16_MEMBER(mlanding_state::analog1_lsb_r)
.x...... Slot down .x...... Slot down
*/ */
uint8_t res = (ioport("LIMIT0")->read() & 0x70) | (m_yoke->throttle_r(space,0) & 0xf); uint8_t res = (ioport("LIMIT0")->read() & 0x70) | (m_yoke->throttle_r() & 0xf);
return res; return res;
} }
@ -521,7 +521,7 @@ READ16_MEMBER(mlanding_state::analog2_lsb_r)
76543210 76543210
....xxxx Counter 2 bits 3-0 ....xxxx Counter 2 bits 3-0
*/ */
return m_yoke->stickx_r(space,0) & 0x0f; return m_yoke->stickx_r() & 0x0f;
} }
@ -534,7 +534,7 @@ READ16_MEMBER(mlanding_state::analog3_lsb_r)
..x..... Handle left ..x..... Handle left
.x...... Handle up .x...... Handle up
*/ */
uint8_t res = (ioport("LIMIT1")->read() & 0x70) | (m_yoke->sticky_r(space,0) & 0xf); uint8_t res = (ioport("LIMIT1")->read() & 0x70) | (m_yoke->sticky_r() & 0xf);
return res; return res;
} }

View File

@ -304,16 +304,16 @@ READ16_MEMBER(taitoair_state::stick_input_r)
switch( offset ) switch( offset )
{ {
case 0x00: /* "counter 1" lo */ case 0x00: /* "counter 1" lo */
return m_yoke->throttle_r(space,0) & 0xff; return m_yoke->throttle_r() & 0xff;
case 0x01: /* "counter 2" lo */ case 0x01: /* "counter 2" lo */
return m_yoke->stickx_r(space,0) & 0xff; return m_yoke->stickx_r() & 0xff;
case 0x02: /* "counter 1" hi */ case 0x02: /* "counter 1" hi */
return (m_yoke->throttle_r(space,0) & 0xff00) >> 8; return (m_yoke->throttle_r() & 0xff00) >> 8;
case 0x03: /* "counter 2" hi */ case 0x03: /* "counter 2" hi */
return (m_yoke->stickx_r(space,0) & 0xff00) >> 8; return (m_yoke->stickx_r() & 0xff00) >> 8;
} }
return 0; return 0;
@ -324,10 +324,10 @@ READ16_MEMBER(taitoair_state::stick2_input_r)
switch( offset ) switch( offset )
{ {
case 0x00: /* "counter 3" lo */ case 0x00: /* "counter 3" lo */
return m_yoke->sticky_r(space,0); return m_yoke->sticky_r();
case 0x02: /* "counter 3" hi */ case 0x02: /* "counter 3" hi */
return (m_yoke->sticky_r(space,0) & 0xff00) >> 8; return (m_yoke->sticky_r() & 0xff00) >> 8;
} }
return 0; return 0;

View File

@ -37,6 +37,9 @@ DEFINE_DEVICE_TYPE(TAITOIO_YOKE, taitoio_yoke_device, "taitoio_yoke", "Taito I/O
taitoio_yoke_device::taitoio_yoke_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) taitoio_yoke_device::taitoio_yoke_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, TAITOIO_YOKE, tag, owner, clock) : device_t(mconfig, TAITOIO_YOKE, tag, owner, clock)
, m_stick_x(*this, "STICK_X")
, m_stick_y(*this, "STICK_Y")
, m_throttle(*this, "THROTTLE")
{ {
} }
@ -82,59 +85,59 @@ ioport_constructor taitoio_yoke_device::device_input_ports() const
// READ/WRITE HANDLERS // READ/WRITE HANDLERS
//************************************************************************** //**************************************************************************
READ16_MEMBER( taitoio_yoke_device::stickx_r ) u16 taitoio_yoke_device::stickx_r()
{ {
return ioport("STICK_X")->read(); return m_stick_x->read();
} }
READ16_MEMBER( taitoio_yoke_device::sticky_r ) u16 taitoio_yoke_device::sticky_r()
{ {
return ioport("STICK_Y")->read(); return m_stick_y->read();
} }
READ16_MEMBER( taitoio_yoke_device::throttle_r ) u16 taitoio_yoke_device::throttle_r()
{ {
return ioport("THROTTLE")->read(); return m_throttle->read();
} }
READ_LINE_MEMBER( taitoio_yoke_device::slot_down_r ) READ_LINE_MEMBER( taitoio_yoke_device::slot_down_r )
{ {
uint16_t throttle = ioport("THROTTLE")->read(); uint16_t throttle = m_throttle->read();
return (throttle & 0xe00) == 0x600; return (throttle & 0xe00) == 0x600;
} }
READ_LINE_MEMBER( taitoio_yoke_device::slot_up_r ) READ_LINE_MEMBER( taitoio_yoke_device::slot_up_r )
{ {
uint16_t throttle = ioport("THROTTLE")->read(); uint16_t throttle = m_throttle->read();
return (throttle & 0xe00) == 0x800; return (throttle & 0xe00) == 0x800;
} }
READ_LINE_MEMBER( taitoio_yoke_device::handle_left_r ) READ_LINE_MEMBER( taitoio_yoke_device::handle_left_r )
{ {
uint16_t x = ioport("STICK_X")->read(); uint16_t x = m_stick_x->read();
return (x & 0xe00) == 0x800; return (x & 0xe00) == 0x800;
} }
READ_LINE_MEMBER( taitoio_yoke_device::handle_right_r ) READ_LINE_MEMBER( taitoio_yoke_device::handle_right_r )
{ {
uint16_t x = ioport("STICK_X")->read(); uint16_t x = m_stick_x->read();
return (x & 0xe00) == 0x600; return (x & 0xe00) == 0x600;
} }
READ_LINE_MEMBER( taitoio_yoke_device::handle_up_r ) READ_LINE_MEMBER( taitoio_yoke_device::handle_up_r )
{ {
uint16_t y = ioport("STICK_Y")->read(); uint16_t y = m_stick_y->read();
return (y & 0xe00) == 0x800; return (y & 0xe00) == 0x800;
} }
READ_LINE_MEMBER( taitoio_yoke_device::handle_down_r ) READ_LINE_MEMBER( taitoio_yoke_device::handle_down_r )
{ {
uint16_t y = ioport("STICK_Y")->read(); uint16_t y = m_stick_y->read();
return (y & 0xe00) == 0x600; return (y & 0xe00) == 0x600;
} }

View File

@ -22,9 +22,9 @@ public:
taitoio_yoke_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); taitoio_yoke_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// I/O operations // I/O operations
DECLARE_READ16_MEMBER( throttle_r ); u16 throttle_r();
DECLARE_READ16_MEMBER( stickx_r ); u16 stickx_r();
DECLARE_READ16_MEMBER( sticky_r ); u16 sticky_r();
DECLARE_READ_LINE_MEMBER( slot_up_r ); DECLARE_READ_LINE_MEMBER( slot_up_r );
DECLARE_READ_LINE_MEMBER( slot_down_r ); DECLARE_READ_LINE_MEMBER( slot_down_r );
@ -40,6 +40,11 @@ protected:
// virtual void device_validity_check(validity_checker &valid) const; // virtual void device_validity_check(validity_checker &valid) const;
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override; virtual void device_reset() override;
private:
required_ioport m_stick_x;
required_ioport m_stick_y;
required_ioport m_throttle;
}; };