http://bugs.winehq.org/show_bug.cgi?id=10636
--- Comment #25 from Pierre Willenbrock pierre@pirsoft.de 2009-06-02 16:05:50 --- So, i figured out that although a can now compile things for windows, i am still lacking the needed knowledge about Direct3D7. Instead i am now looking over the logs, and found that the game tries to do Blts from/to the z-buffer(while BeginScene is in effect, but avoiding that early bail-out is easy).
I think this works like this: There is an offscreen z-buffer(0x160d58 in my log) and and the onscreen z-buffer(0x1f28d0). If the offscreen z-buffer is uninitialised, the ground tiles etc are rendered, then the onscreen z-buffer blted to the offscreen z-buffer. After this, whenever a new frame needs to be rendered, the offscreen z-buffer is blted over the onscreen z-buffer. When moving the viewarea around, the offscreen z-buffer is first blted to the onscreen z-buffer at the new position, the missing parts rendered and then blted back to the offscreen z-buffer. (I think the back-buffer is handled in a similar way.)
Now, this all fails, because a) the game tries to do this while BeginScene is active b) the z-buffer-blts are not implemented.