https://bugs.winehq.org/show_bug.cgi?id=39874
--- Comment #2 from zakarjor@yahoo.com --- (In reply to Stefan Dösinger from comment #1)
d3d8 validates lock rectangles, as the tests in dlls/d3d8/tests/device.c shows. d3d9 afaik doesn't do that.
Does the game call LockRect through IDirect3DSurface8 directly, or does it call IDirect3DTexture8::LockRect? There may be different behavior between those two.
The log seems to indicate IDirect3DTexture8::LockRect().
Maybe zero-width rectangle is not such an invalid rectangle, as long as it's non-negative widths and heights? I don't have Windows to verify the original behavior. I'm also not sure whether Windows have special-case of compatibility for this game. At least I found out that level 10 was the last level, so I was able to play thru the whole game.