From cc8ae53ee4b7c36540b616e5b9bd16a10efd168a Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 10 Nov 2012 01:42:28 +0200 Subject: [PATCH] frontend: change nub_adjust ranges --- frontend/plugin_lib.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index d306cc4f..8546c92f 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; -- 2.39.5