diff options
Diffstat (limited to 'src/mame/drivers/apple2e.cpp')
-rw-r--r-- | src/mame/drivers/apple2e.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index da3b6038563..d0279537c2c 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -1903,10 +1903,23 @@ void apple2e_state::do_io(int offset, bool is_iic) accel_normal_speed(); } - m_joystick_x1_time = machine().time().as_double() + m_x_calibration * m_gameio->pdl0_r(); - m_joystick_y1_time = machine().time().as_double() + m_y_calibration * m_gameio->pdl1_r(); - m_joystick_x2_time = machine().time().as_double() + m_x_calibration * m_gameio->pdl2_r(); - m_joystick_y2_time = machine().time().as_double() + m_y_calibration * m_gameio->pdl3_r(); + // 558 monostable one-shot timers; a running timer cannot be restarted + if (machine().time().as_double() >= m_joystick_x1_time) + { + m_joystick_x1_time = machine().time().as_double() + m_x_calibration * m_gameio->pdl0_r(); + } + if (machine().time().as_double() >= m_joystick_y1_time) + { + m_joystick_y1_time = machine().time().as_double() + m_y_calibration * m_gameio->pdl1_r(); + } + if (machine().time().as_double() >= m_joystick_x2_time) + { + m_joystick_x2_time = machine().time().as_double() + m_x_calibration * m_gameio->pdl2_r(); + } + if (machine().time().as_double() >= m_joystick_y2_time) + { + m_joystick_y2_time = machine().time().as_double() + m_y_calibration * m_gameio->pdl3_r(); + } break; default: |