diff options
author | notaz | 2012-11-10 01:42:28 +0200 |
---|---|---|
committer | notaz | 2012-11-10 01:42:28 +0200 |
commit | cc8ae53ee4b7c36540b616e5b9bd16a10efd168a (patch) | |
tree | be9dc9e694e470386f6836dc526c701f4e285995 /frontend | |
parent | 2c5d0a55b2b48b33f6d15b59d6f04a06c90b2ab5 (diff) | |
download | pcsx_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.c | 25 |
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; |