]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Inverted lightpen/gun horizontal/vertical
authorToni Wilen <twilen@winuae.net>
Fri, 10 Mar 2023 18:19:05 +0000 (20:19 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 10 Mar 2023 18:19:05 +0000 (20:19 +0200)
inputdevice.cpp
inputevents.def

index 612147905d6998e61e774433091f2b0bb50fcd5b..299d0b94f0390d7db27d8ba380c8c6a5f50b6ebe 100644 (file)
@@ -5144,6 +5144,11 @@ static int handle_input_event2(int nr, int state, int max, int flags, int extra)
                        }
                        lightpen_enabled = true;
                        if (flags & HANDLE_IE_FLAG_ABSOLUTE) {
+                               if (ie->data & IE_INVERT) {
+                                       if (extra >= 0) {
+                                               extra = 65535 - extra;
+                                       }
+                               }
                                lastmxy_abs[lpnum][unit] = extra;
                                if (!unit)
                                        return 1;
@@ -5172,7 +5177,9 @@ static int handle_input_event2(int nr, int state, int max, int flags, int extra)
                                        max -= deadzone;
                                        delta = state * currprefs.input_joymouse_multiplier / (10 * max);
                                }
-                               if (ie->data)
+                               if (ie->data & IE_INVERT)
+                                       delta = -delta;
+                               if (unit)
                                        lightpen_y[lpnum] += delta;
                                else
                                        lightpen_x[lpnum] += delta;
@@ -5185,6 +5192,8 @@ static int handle_input_event2(int nr, int state, int max, int flags, int extra)
                        } else {
                                if (state) {
                                        int delta = currprefs.input_joymouse_speed;
+                                       if (ie->data & IE_INVERT)
+                                               delta = -delta;
                                        if (ie->data & DIR_LEFT)
                                                lightpen_x[lpnum] -= delta;
                                        if (ie->data & DIR_RIGHT)
index 4aba3c7e411eafffaaefc6db5aab536b3442678e..76930bf71112dcf56b8dfcd8ae15d418b496de87 100644 (file)
@@ -98,12 +98,16 @@ DEFEVENT(LIGHTPEN_FIRST, _T(""), AM_DUMMY, 0,0,0)
 
 DEFEVENT(LIGHTPEN_HORIZ,_T("Lightpen Horizontal"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,0)
 DEFEVENT(LIGHTPEN_VERT,_T("Lightpen Vertical"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,1)
+DEFEVENT(LIGHTPEN_HORIZ_INV,_T("Lightpen Horizontal (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,0|IE_INVERT)
+DEFEVENT(LIGHTPEN_VERT_INV,_T("Lightpen Vertical (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,1|IE_INVERT)
 DEFEVENT(LIGHTPEN_LEFT,_T("Lightpen Left"),AM_K,1,5,DIR_LEFT)
 DEFEVENT(LIGHTPEN_RIGHT,_T("Lightpen Right"),AM_K,1,5,DIR_RIGHT)
 DEFEVENT(LIGHTPEN_UP,_T("Lightpen Up"),AM_K,1,5,DIR_UP)
 DEFEVENT(LIGHTPEN_DOWN,_T("Lightpen Down"),AM_K,1,5,DIR_DOWN)
 DEFEVENT(LIGHTPEN_HORIZ2,_T("Dual Lightpen Horizontal #2"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,0)
 DEFEVENT(LIGHTPEN_VERT2,_T("Dual Lightpen Vertical #2"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,1)
+DEFEVENT(LIGHTPEN_HORIZ2_INV,_T("Dual Lightpen Horizontal #2 (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,0|IE_INVERT)
+DEFEVENT(LIGHTPEN_VERT2_INV,_T("Dual Lightpen Vertical #2 (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,1|IE_INVERT)
 DEFEVENT(LIGHTPEN_LEFT2,_T("Dual Lightpen Left #2"),AM_K,1,6,DIR_LEFT)
 DEFEVENT(LIGHTPEN_RIGHT2,_T("Dual Lightpen Right #2"),AM_K,1,6,DIR_RIGHT)
 DEFEVENT(LIGHTPEN_UP2,_T("Dual Lightpen Up #2"),AM_K,1,6,DIR_UP)