aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/psp/input.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/psp/input.cpp')
-rw-r--r--backends/platform/psp/input.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/backends/platform/psp/input.cpp b/backends/platform/psp/input.cpp
index b5d90803d6..7a2047f28e 100644
--- a/backends/platform/psp/input.cpp
+++ b/backends/platform/psp/input.cpp
@@ -37,7 +37,7 @@
#define PSP_TRIGGERS (PSP_CTRL_LTRIGGER | PSP_CTRL_RTRIGGER)
#define PSP_ALL_BUTTONS (PSP_DPAD | PSP_4BUTTONS | PSP_TRIGGERS | PSP_CTRL_START | PSP_CTRL_SELECT)
-#define PAD_CHECK_TIME 14 // was 53
+#define PAD_CHECK_TIME 13 // was 53
Button::Button() {
clear();
@@ -280,12 +280,6 @@ bool Nub::getEvent(Common::Event &event, PspEvent &pspEvent, SceCtrlData &pad) {
analogStepX = modifyNubAxisMotion(analogStepX);
analogStepY = modifyNubAxisMotion(analogStepY);
- static int32 hiresX = 0;
- static int32 hiresY = 0;
-
- hiresX += analogStepX;
- hiresY += analogStepY;
-
int32 speedFactor = 25;
switch (ConfMan.getInt("kbdmouse_speed")) {
// 0.25 keyboard pointer speed
@@ -324,18 +318,24 @@ bool Nub::getEvent(Common::Event &event, PspEvent &pspEvent, SceCtrlData &pad) {
speedFactor = 25;
}
- int32 additionalFactor = 32;
+ // the larger the factor, the slower the cursor will move
+ int32 additionalFactor = 16;
if (_shifted) {
- additionalFactor = 256;
+ additionalFactor = 192;
}
- int32 factor = speedFactor * additionalFactor / 25;
+ int32 factor = (speedFactor * additionalFactor) / 25;
+
+ // hi-res cumulative analog delta for sub-pixel cursor positioning
+ _hiresX += (analogStepX * 1024) / factor;
+ _hiresY += (analogStepY * 1024) / factor;
- analogStepX = hiresX / factor;
- analogStepY = hiresY / factor;
+ analogStepX = (_hiresX / 1024);
+ analogStepY = (_hiresY / 1024);
- hiresX %= factor;
- hiresY %= factor;
+ // keep track of remainder for true sub-pixel cursor position
+ _hiresX %= 1024;
+ _hiresY %= 1024;
int32 oldX = _cursor->getX();
int32 oldY = _cursor->getY();