-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Am 2014-03-21 03:24, schrieb Christopher Thielen:
apitrace is really neat, thanks for pointing it out. I ran it on Windows XP with the Ultima IX (GOG edition) and generated a trace - which shows the missing mouse cursor - then rebooted into Linux and ran the Windows version of apitrace's GUI using the same .trace file and it _did_ also show the mouse cursor, running under Wine.
It means one thing for sure: The cursor is not a user32 cursor. Otherwise it would not show up in the captures.
I have two theories: Either the game looks at the d3d capabilities (CheckDeviceFormat, GetDeviceCaps, mostly IDirect3D9 methods) and concludes that something is missing, enters a bad codepath and does not draw the pointer.
Or some function unrelated to d3d does not work and the game fails to read the pointer from its resources.
Since this is a glide application running through a glide wrapper the second case is much more likely. (Unless my memory is completely broken)
You can compile wined3d for Windows. The basic idea is to set CFLAGS=-DUSE_WIN32_OPENGL and compile it with mingw on Windows, or Cross-Compile it from Linux. I also have a hacky Visual Studio 2013 based build setup, but you'll have a hard time generating a binary that works on Windows XP with that. With a Win32 build of wined3d.dll and our d3d9.dll you can run the game on Windows with our d3d code. If the pointer shows up in that case this demonstrates that it is not a d3d issue. If it does not, it shows that the issue is a capability flag problem.
Also, I don't know apitrace that well, but is the per-frame 'texture' tab only showing textures utilized in that frame, not counting anything already in the framebuffer? I couldn't find the cursor texture after looking at about two dozen frames, but then again, I didn't find most textures using that method.
No idea :-(
I did run an apitrace of Ultima IX (GOG edition) on Linux for kicks but I don't think it'll help much. There is a factor of about 4x as many calls per frame when running under Wine FYI, but I'm assuming the Wine D3D folks are already aware of that sort of issue.
Did you run the Linux apitrace? In this case you'll see OpenGL calls instead of d3d calls. Or did you use the Windows apitrace version inside Wine?