[Wine] Re: wine source code, Bug6971, suse 12.1,kde

Lord_Valarian wineforum-user at winehq.org
Sat Jan 14 15:41:58 CST 2012


This is what i'v done so far.  The POL script by me and another for the GOG version - gold edition. Run playonlinux install script and compile wine 1.3.36

I'm not doing this by hand. The POL script is already there. It will run without crashing. Mouse won't work except on multii-player. I'v already changed "dinput.dll"


Code:
#wget http://sourceforge.net/projects/wine/files/Source/wine-1.3.36.tar.bz2
#tar xjvf wine-1.3.36.tar.bz2

cd wine-1.3.36

./configure
#make depend    doesn't work
make

mv -v '/home/username/bin/wine-1.3.36/dlls/dinput/dinput.dll.fake' '/home/username/bin/wine-1.3.36/dlls/dinput/dinput.dll'
mv -v '/home/username/bin/wine-1.3.36/dlls/dinput/dinput.dll' '/home/username/.PlayOnLinux/wine/linux-x86/1.3.36/lib/wine/fakedlls/'





Either directory linux-x86 or amd64 won't do anything. I download and unzip using the above. I make these changes:

/home/username/bin/wine-1.3.36/dlls/dinput/mouse.c


Code:
   switch(wparam) {
        case WM_MOUSEMOVE:
        {
            POINT pt, pt1;

            if (This->clipped) pt = This->mapped_center;
            else GetCursorPos(&pt);
	    
	    //mouse patch
	    pt.x = hook->pt.x - pt.x;    // this makes pt.x a relative movement.
	    This->m_state.lX=This->m_state.lX + (pt.x * 100);// add relative movement to your structure

	    pt.y = hook->pt.y - pt.y;    // this makes pt.y a relative movement.
	    This->m_state.lY=This->m_state.lY + (pt.y * 100);// add relative movement to your structure	    





That dll is only code being changed. So, I overwrite the dll with the patched dll. I start POL and launch "empire earth". This doesn't work. Will this setup allow me to alter the mouse code?    No changes are having any effect.

All POL script options have no effect. MSWIN does work. So, the emulation is wrong(clearly).  I don't know enough find the problem. 


> I thought that Empire Earth 1 was fixed a while ago. I guess not, or it was broken again.


I'v read everything I could find. The mouse problems were never fixed, only the graphical glitches. 
You can move the mouse. It takes very large fast movements to get a small effect, about 15 to 1. The raw input patch has no effect.

http://wiki.winehq.org/Bug6971


> As I recall, timing & Wine warping mouse were the main issues with this game. It warps mouse itself, so most mouse move events were lost. The current Wine code isn't all that much better. Yes, it's using XInput 2 but still messing with pointer position, warping mouse, breaks timing between different mouse position change events.


Mouse warping?  center it on the screen by resetting the mouse position. Also, I can compile it, but in configure it's giving me many warnings.

I'm noob to mouse coding, slow down. So, mswin is able to read the data correctly. How does it read the data?

Read absolute xy from linux-->wine converts it to mswin format-->sends to empire earth 

Maybe EE could be patched to match what is patched in the muli-player lobby(AOC).  Can you explain in detail what is going wrong in conversion from linux wine to mswin?

The mouse code has almost no comments. So, it make it nearly impossible to figure out what's going on or how to print mouse values. I can't fix what I don't understand.


> The first thing you can do is to try native dinput.dll. If it works, then you know that built-in could be fixed without touching anything else (won't really be that easy of course). But if it doesn't, then you'll have to mess with x11drv, server, user32. 


First, try fixing the wine mouse code.







More information about the wine-users mailing list