http://bugs.winehq.org/show_bug.cgi?id=18040
--- Comment #21 from Stefan Dösinger stefandoesinger@gmx.at 2009-04-19 05:59:28 --- There's one more thing you can try. Can you modify IWineD3DDeviceImpl_CreateIndexBuffer in dlls/wined3d/device.c this way:
right before the "return WINED3D_OK;" (aroud line 582), insert "object->flags |= WINED3D_BUFFER_DOUBLEBUFFER;" This will essentially disable the new memory saving feature with the least code modification and give some hint where things are going wrong.
I have the horrible suspicion that the game tries to access the buffer memory after calling Unlock(). This is invalid, but happened to work with the old code, but depends on the OpenGL driver's mercy in the new code. If this is the case, we'll have to revert the memsave patch :-(