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.
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");