http://bugs.winehq.org/show_bug.cgi?id=15226
--- Comment #26 from Toni Spets toni.spets@iki.fi 2011-04-03 11:09:49 CDT --- By analyzing the game binary using different sources from the Internet I have come to a conclusion (and a binary patch) that the threading in the game itself gets messed up and some condition is never cleared that the cursor should be visible.
What the patch does is that it never allows the game to reach the condition when it would hide the cursor when going to draw it (I don't know why it hides it before drawing).
So, the binary fix for Red Alert 3.03 (patcher) is at http://hifi.iki.fi/cnc/ra/patches/ra303_fix_cursor_bug.exe and the relevant source for the patch data is at http://hifi.iki.fi/cnc/ra/patches/source/ra303_fix_cursor_bug.h if you want to patch the exe by hand.
The underlying cause is somewhere in the directdraw and thread implementation of Wine, locking or something. It might be impossible to trace.
To build this patch I used the original ra95.dat from 3.03 patch zip, OllyDbg on Wine and a .map file that was extracted from some 2.00 version of the game that had debugging symbols enabled which helped to find the correct class and method to dig.
I know this bugzilla is for Wine bugs and should be strictly about fixing Wine but I thought like with cnc-ddraw that providing the information users are looking for right here is good service.
So the bottom line is that this issue happens on Windows too if the ddraw implemention is replaced by cnc-ddraw which points to a conclusion the problem is about ddraw and Windows thread synchronization working together correctly.