summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/taitoio_yoke.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/taitoio_yoke.cpp')
-rw-r--r--src/mame/machine/taitoio_yoke.cpp32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/mame/machine/taitoio_yoke.cpp b/src/mame/machine/taitoio_yoke.cpp
index 5999ed11ec6..ddf55994403 100644
--- a/src/mame/machine/taitoio_yoke.cpp
+++ b/src/mame/machine/taitoio_yoke.cpp
@@ -8,8 +8,10 @@
TODO:
- Custom part #;
- - Air Inferno uses different limit types (helicopter inputs?)
-
+ - Air Inferno uses different limit types (helicopter inputs?), might be
+ worth doing a subclass of this;
+ - Get dead zones from actual HW (currently hardlocked to 0x20);
+
***************************************************************************/
#include "emu.h"
@@ -59,14 +61,14 @@ void taitoio_yoke_device::device_reset()
}
static INPUT_PORTS_START( yoke_inputs )
- PORT_START("THROTTLE")
- PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_Z ) PORT_MINMAX(0x0080,0x007f) PORT_SENSITIVITY(30) PORT_KEYDELTA(40) PORT_REVERSE
-
PORT_START("STICK_X")
- PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x00800, 0x07ff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
+ PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x00800, 0x07ff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_NAME("Yoke X")
PORT_START("STICK_Y")
- PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_Y ) PORT_MINMAX(0x00800, 0x07ff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
+ PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_Y ) PORT_MINMAX(0x00800, 0x07ff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_NAME("Yoke Y")
+
+ PORT_START("THROTTLE")
+ PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_Y ) PORT_MINMAX(0x0080,0x007f) PORT_SENSITIVITY(30) PORT_KEYDELTA(40) PORT_NAME("Throttle Lever")
INPUT_PORTS_END
ioport_constructor taitoio_yoke_device::device_input_ports() const
@@ -97,41 +99,41 @@ READ16_MEMBER( taitoio_yoke_device::throttle_r )
READ_LINE_MEMBER( taitoio_yoke_device::slot_down_r )
{
uint16_t throttle = ioport("THROTTLE")->read();
-
- return (throttle != 0) && (throttle & 0x80) == 0x00;
+
+ return (throttle & 0xe0) == 0x60;
}
READ_LINE_MEMBER( taitoio_yoke_device::slot_up_r )
{
uint16_t throttle = ioport("THROTTLE")->read();
- return (throttle & 0x80) == 0x80;
+ return (throttle & 0xe0) == 0x80;
}
READ_LINE_MEMBER( taitoio_yoke_device::handle_left_r )
{
uint16_t x = ioport("STICK_X")->read();
- return (x & 0x800) == 0x800;
+ return (x & 0xe00) == 0x800;
}
READ_LINE_MEMBER( taitoio_yoke_device::handle_right_r )
{
uint16_t x = ioport("STICK_X")->read();
- return (x != 0) && (!(x & 0x800));
+ return (x & 0xe00) == 0x600;
}
READ_LINE_MEMBER( taitoio_yoke_device::handle_up_r )
{
uint16_t y = ioport("STICK_Y")->read();
-
- return (y & 0x800) == 0x800;
+
+ return (y & 0xe00) == 0x800;
}
READ_LINE_MEMBER( taitoio_yoke_device::handle_down_r )
{
uint16_t y = ioport("STICK_Y")->read();
- return (y != 0) && (!(y & 0x800));
+ return (y & 0xe00) == 0x600;
}