Hello,
I am tracing a mouse problem in the game Theme Hospital. It is a old game, so it is not using dinput. The game works "correct" until that you arrive to the first screen what you must move the mouse. The X cursor is visible in pos 0,0, and the game cursor in middle of the screen. If you move to right or down, the game cursor moves correctly, but if you move to left or up the game cursor doesn't move. The X cursor is continually returning to pos 0,0. In traces:
trace:cursor:X11DRV_SetCursorPos warping to (0,0) trace:cursor:send_mouse_event (8001,0,0) trace:cursor:X11DRV_SetCursorPos warping to (0,0) trace:cursor:send_mouse_event (8001,0,0)
000a:Call window proc 0x492050 (hwnd=0x10021,msg=WM_MOUSEMOVE,wp=00000000,lp=00000000) 000a:Call kernel32._ConfirmSysLevel(4085cce8) ret=40803b59 000a:Ret kernel32._ConfirmSysLevel() retval=00000000 ret=40803b59 000a:Call user32.GetClipCursor(42372d0c) ret=0049135b 000a:Ret user32.GetClipCursor() retval=00000001 ret=0049135b 000a:Call user32.SetCursorPos(00000000,00000000) ret=00491408 000a:Call x11drv.SetCursorPos(00000000,00000000) ret=407ef1b4 000a:trace:cursor:X11DRV_SetCursorPos warping to (0,0) 000a:Ret x11drv.SetCursorPos() retval=00000000 ret=407ef1b4 000a:Ret user32.SetCursorPos() retval=00000001 ret=00491408 000a:Call user32.DefWindowProcA(00010021,00000200,00000000,00000000) ret=00494ad7
I am not sure, if it is the own game, or a different routine what is moving the X cursor back to (0,0), but i think that the problem is that because it is always in 0,0, the X mouse events doesn't process the left/up moves.
I have been tracing X11DRV_MotionNotify, and if i move only up/left from the start of the game, it has always coordinates values 0, so the game can't know what the mouse is moving up/left.
Some idea, fixing it?
Thanks, Regards, Carlos.