int 33

Nog nog at sdf.lonestar.org
Sat Jan 26 11:06:52 CST 2002


Sorry forgot the file.

Nog wrote:

 > With this patch I can get into the copy protection screen in monkey
 > island 2 but the keyboard still doesn't work.
 >
 > Changelog:
 > * dlls/winedos/int33.c
 >      Implement function number 0x5 (Return mouse button press
 > information)
 >
 > nog
 >
 > P.S. Does anyone know how the Mouse motion counters (function 0xb) work?
 >
 >
 >
 >
 >



-------------- next part --------------
Index: dlls/winedos/int33.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int33.c,v
retrieving revision 1.1
diff -u -r1.1 int33.c
--- dlls/winedos/int33.c	2001/12/04 19:54:45	1.1
+++ dlls/winedos/int33.c	2002/01/26 15:17:29
@@ -19,6 +19,7 @@
 static struct
 {
   DWORD x, y, but;
+  WORD lbcount, rbcount, rlastx, rlasty, llastx, llasty;
   FARPROC16 callback;
   WORD callmask;
 } mouse_info;
@@ -52,6 +53,22 @@
   case 0x04:
     FIXME("Position mouse cursor\n");
     break;
+  case 0x05:
+    TRACE("Return Mouse button press Information for %s mouse button\n",
+          BX_reg(context) ? "right" : "left");
+    if (BX_reg(context)) {
+      BX_reg(context) = mouse_info.rbcount;
+      mouse_info.rbcount = 0;
+      CX_reg(context) = mouse_info.rlastx;
+      DX_reg(context) = mouse_info.rlasty;
+    } else {
+      BX_reg(context) = mouse_info.lbcount;
+      mouse_info.lbcount = 0;
+      CX_reg(context) = mouse_info.llastx;
+      DX_reg(context) = mouse_info.llasty;
+    }
+    AX_reg(context) = mouse_info.but;
+    break;
   case 0x07:
     FIXME("Define horizontal mouse cursor range\n");
     break;
@@ -106,7 +123,8 @@
 
   if (!VGA_GetMode(&Height,&Width,NULL)) {
     /* may need to do some coordinate scaling */
-    SX = 640/Width;
+    if (Width) 
+      SX = 640/Width;
     if (!SX) SX=1;
   }
   mouse_info.x = LOWORD(lParam) * SX;
@@ -119,6 +137,9 @@
   case WM_LBUTTONDBLCLK:
     mouse_info.but |= 0x01;
     mask |= 0x02;
+    mouse_info.llastx = mouse_info.x;
+    mouse_info.llasty = mouse_info.y;
+    mouse_info.lbcount++;
     break;
   case WM_LBUTTONUP:
     mouse_info.but &= ~0x01;
@@ -128,6 +149,9 @@
   case WM_RBUTTONDBLCLK:
     mouse_info.but |= 0x02;
     mask |= 0x08;
+    mouse_info.rlastx = mouse_info.x;
+    mouse_info.rlasty = mouse_info.y;
+    mouse_info.rbcount++;
     break;
   case WM_RBUTTONUP:
     mouse_info.but &= ~0x02;



More information about the wine-patches mailing list