int 33 function 0xb
Nog
nog at sdf.lonestar.org
Thu Jan 31 11:59:31 CST 2002
Hi,
This enables the mouse to move in Monkey Island 2.
Changelog:
* dlls/winedos/int33.c
Implement function 0xb (Read mouse motion counters) and 0xf (Set
mickey/pixel ratio)
nog.
-------------- next part --------------
Index: dlls/winedos/int33.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int33.c,v
retrieving revision 1.2
diff -u -r1.2 int33.c
--- dlls/winedos/int33.c 2002/01/29 02:51:47 1.2
+++ dlls/winedos/int33.c 2002/01/31 16:14:51
@@ -22,6 +22,7 @@
WORD lbcount, rbcount, rlastx, rlasty, llastx, llasty;
FARPROC16 callback;
WORD callmask;
+ WORD VMPratio, HMPratio, oldx, oldy;
} mouse_info;
/**********************************************************************
@@ -37,6 +38,9 @@
AX_reg(context) = 0xFFFF; /* installed */
BX_reg(context) = 3; /* # of buttons */
memset( &mouse_info, 0, sizeof(mouse_info) );
+ /* Set the default mickey/pixel ratio */
+ mouse_info.HMPratio = 8;
+ mouse_info.VMPratio = 16;
break;
case 0x01:
FIXME("Show mouse cursor\n");
@@ -81,10 +85,22 @@
case 0x0A:
FIXME("Define text mouse cursor\n");
break;
+ case 0x0B:
+ TRACE("Read Mouse motion counters\n");
+ CX_reg(context) = (mouse_info.x - mouse_info.oldx) * (mouse_info.HMPratio / 8);
+ DX_reg(context) = (mouse_info.y - mouse_info.oldy) * (mouse_info.VMPratio / 8);
+ mouse_info.oldx = mouse_info.x;
+ mouse_info.oldy = mouse_info.y;
+ break;
case 0x0C:
TRACE("Define mouse interrupt subroutine\n");
mouse_info.callmask = CX_reg(context);
mouse_info.callback = (FARPROC16)MAKESEGPTR(context->SegEs, LOWORD(context->Edx));
+ break;
+ case 0x0F:
+ TRACE("Set mickey/pixel ratio\n");
+ mouse_info.HMPratio = CX_reg(context);
+ mouse_info.VMPratio = DX_reg(context);
break;
case 0x10:
FIXME("Define screen region for update\n");
More information about the wine-patches
mailing list