https://bugs.winehq.org/show_bug.cgi?id=22317
Paul Gofman gofmanp@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gofmanp@gmail.com
--- Comment #10 from Paul Gofman gofmanp@gmail.com --- Created attachment 54217 --> https://bugs.winehq.org/attachment.cgi?id=54217 Quick fix for d3d_viewport_TransformVertices
I've tracked down the issue and attaching the patch as a proof of concept.
To run the game somehow and to come to the problem in the bug title I had to use native d3drm (I did not look what's wrong with the builtin one).
The game is using d3d2 interface. The problem is in ddraw's d3d_viewport_TransformVertices function, actually two of them: 1. It does not get a projection matrix set by application 2. It uses wrong scale derived from viewport for transformation.
The patch lets game to render "smoke" normally. It is not correct solution yet (apparently the current implementation is OK for some other use cases which will be broken by this patch), it breaks D3D1 unit tests, and apart from that needs unit tests to explore this functionality. I could guess that the behaviour difference can be attributed to d3d2 and changed from d3d1 (for which a unit test exists), but this should be tested to make a proper fix.
PS I think it is not smoke but rather dirt from the ground.