https://bugs.winehq.org/show_bug.cgi?id=23863
--- Comment #31 from Paul Gofman gofmanp@gmail.com --- Created attachment 63296 --> https://bugs.winehq.org/attachment.cgi?id=63296 Fix MaxVertexW returned by GetDeviceCaps().
The game does not like MaxVertexW of 1.0 which Wine d3d9 currently returns from GetDeviceCaps(). I am attaching a proof of concept patch which fixes the issue.
The value of 1e10 is what I get on Windows 7 machine. Somehow the same value is returned in VirtualBox Win7 guest on my Linux host, while VirtualBox uses wined3d as its host d3d driver.
The game directly transfers the value of MaxVertexW to shader constant (const_idx 1, component z). This value is used in shaders to limit the w value of some computed coordinate. The game does not necessarily wants 1e10 in this constant, it is also happy with 100, 1000 or FLT_MAX, but not with, e. g., 10. So it just has to be big enough.