aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authornotaz2012-11-10 01:42:28 +0200
committernotaz2012-11-10 01:42:28 +0200
commitcc8ae53ee4b7c36540b616e5b9bd16a10efd168a (patch)
treebe9dc9e694e470386f6836dc526c701f4e285995 /frontend
parent2c5d0a55b2b48b33f6d15b59d6f04a06c90b2ab5 (diff)
downloadpcsx_rearmed-cc8ae53ee4b7c36540b616e5b9bd16a10efd168a.tar.gz
pcsx_rearmed-cc8ae53ee4b7c36540b616e5b9bd16a10efd168a.tar.bz2
pcsx_rearmed-cc8ae53ee4b7c36540b616e5b9bd16a10efd168a.zip
frontend: change nub_adjust ranges
Diffstat (limited to 'frontend')
-rw-r--r--frontend/plugin_lib.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c
index d306cc4..8546c92 100644
--- a/frontend/plugin_lib.c
+++ b/frontend/plugin_lib.c
@@ -435,12 +435,25 @@ void pl_switch_dispmode(void)
* more square-like analogs in PSX */
static void update_analog_nub_adjust(int *x_, int *y_)
{
- static const int scale[] = { 0, 0, 0, 12, 30, 60, 75, 60, 60 };
- int x = *x_;
- int y = *y_;
-
- x += x * scale[abs(y) / 16] >> 8;
- y += y * scale[abs(x) / 16] >> 8;
+ const int d = 16;
+ static const int scale[] =
+ { 0 - d*2, 0 - d*2, 0 - d*2, 12 - d*2,
+ 30 - d*2, 60 - d*2, 75 - d*2, 60 - d*2, 60 - d*2 };
+ int x = abs(*x_);
+ int y = abs(*y_);
+ int scale_x = scale[y / 16];
+ int scale_y = scale[x / 16];
+
+ if (x) {
+ x += d + (x * scale_x >> 8);
+ if (*x_ < 0)
+ x = -x;
+ }
+ if (y) {
+ y += d + (y * scale_y >> 8);
+ if (*y_ < 0)
+ y = -y;
+ }
*x_ = x;
*y_ = y;