On Apr 22, 2014, at 7:57 PM, Christopher Thielen wrote:
Here's a wild theory knowing little about this stuff: ReadFile is maybe supposed to clear out that thread's GetLastError value and u9.exe is calling GetLastError() to see if errors exist, instead of checking only after a zero return value from ReadFile like it should (it is considered a poorly written game). If Wine doesn't clear out GetLastError correctly, it could cause an alternate code path to run under Wine in which the cursors are believed not to be loaded properly.
That's a reasonable theory given what the relay log shows. Try adding a call to SetLastError(0) near the top of ReadFile() to see if it changes the game's behavior.
-Ken