http://bugs.winehq.org/show_bug.cgi?id=32485
--- Comment #1 from Stefan Dösinger stefan@codeweavers.com 2012-12-20 09:51:02 CST --- Created attachment 42867 --> http://bugs.winehq.org/attachment.cgi?id=42867 ddraw: Don't discard buffers that haven't been used in draws
Can you give this patch a try? It fixes the problem for me, but I don't quite like it.
The game apparently wants the buffer contents to remain intact when it locks a buffer with DDLOCK_DISCARDCONTENTS - or at least in some cases. I noticed that the game maps and unmaps a buffer repeatedly with this flag, without ever drawing from it. In theory DISCARDCONTENTS is redundant in all but the first lock after a draw, but the driver still discards the buffer contents. Ignoring the flag and memsetting the buffer to some random value has the same effect as setting the flag.
The other thing that's suspicious is that the game uses software vertex processing on Windows, mostly because Windows enumerates Direct3DHAL before it enumerates Direct3DTnLHAL. However, If I configure the game to use TnLHAL on Windows, the track marks still work. I am not sure if the game reliably listens to its device type setting.