From 94c4eb962f0d997807f5b4339096a1db15ca3492 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 9 May 2019 20:11:42 +0200 Subject: [PATCH] define dejitter defaults --- src/emucore/Paddles.cxx | 17 +++++++++++++---- src/gui/InputDialog.cxx | 8 ++++++++ src/unix/r77/SettingsR77.cxx | 4 ++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/emucore/Paddles.cxx b/src/emucore/Paddles.cxx index 76245b154..326ac34e1 100644 --- a/src/emucore/Paddles.cxx +++ b/src/emucore/Paddles.cxx @@ -262,6 +262,7 @@ void Paddles::update() bool sa_changed = false; int sa_xaxis = myEvent.get(myP0AxisValue); int sa_yaxis = myEvent.get(myP1AxisValue); + int new_val; const double bFac[MAX_DEJITTER - MIN_DEJITTER + 1] = { // higher values mean more dejitter strength @@ -280,18 +281,26 @@ void Paddles::update() if(abs(myLastAxisX - sa_xaxis) > 10) { - // anti jitter, suppress small changes only + // dejitter, suppress small changes only double dejitter = std::pow(baseFactor, abs(sa_xaxis - myLastAxisX) * diffFactor); - sa_xaxis = sa_xaxis * (1 - dejitter) + myLastAxisX * dejitter; + new_val = sa_xaxis * (1 - dejitter) + myLastAxisX * dejitter; + + // only use new dejittered value for larger differences + if (abs(new_val - sa_xaxis) > 10) + sa_xaxis = new_val; setPin(AnalogPin::Nine, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_xaxis)) / 65536.0))); sa_changed = true; } if(abs(myLastAxisY - sa_yaxis) > 10) { - // anti jitter, suppress small changes only + // dejitter, suppress small changes only double dejitter = std::pow(baseFactor, abs(sa_yaxis - myLastAxisY) * diffFactor); - sa_yaxis = sa_yaxis * (1 - dejitter) + myLastAxisY * dejitter; + new_val = sa_yaxis * (1 - dejitter) + myLastAxisY * dejitter; + + // only use new dejittered value for larger differences + if (abs(new_val - sa_yaxis) > 10) + sa_yaxis = new_val; setPin(AnalogPin::Five, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_yaxis)) / 65536.0))); sa_changed = true; diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index e55d2f3e6..9ff6450ca 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -413,8 +413,16 @@ void InputDialog::setDefaults() myDPaddleLabel->setLabel("10"); myMPaddleSpeed->setValue(10); myMPaddleLabel->setLabel("10"); + // FIXME - use the R77 define in the final release + // use the '1' define for testing + #if defined(RETRON77) +// #if 1 + myDejitterBase->setValue(2); + myDejitterDiff->setValue(6); + #else myDejitterBase->setValue(0); myDejitterDiff->setValue(0); + #endif UpdateDejitter(); myTrackBallSpeed->setValue(10); myTrackBallLabel->setLabel("10"); diff --git a/src/unix/r77/SettingsR77.cxx b/src/unix/r77/SettingsR77.cxx index f10b50dbd..d4d76405b 100644 --- a/src/unix/r77/SettingsR77.cxx +++ b/src/unix/r77/SettingsR77.cxx @@ -72,6 +72,10 @@ SettingsR77::SettingsR77() setPermanent("tv.phosblend", "45"); // level 6 setPermanent("tv.scanlines", "18"); // level 3 + // enable dejitter by default + setPermanent("dejitterBase", "2"); + setPermanent("dejitterDiff", "6"); + setPermanent("joymap", string() + "128^i2c_controller|4 17 18 15 16 31 31 35 35 121 122 112 113 0 0 0 0|8 19 20 100 99 103 0 0 0 120 123 127 126 0 124 0 0|" +