http://bugs.winehq.org/show_bug.cgi?id=31918
--- Comment #16 from Andras Kovacs andras@sth.sze.hu 2013-01-17 11:31:26 CST --- I debugged towards the application, and I realized the crash occurs in video card driver, and it related to specific circumstances. If you use this shameful workaround (that ignores this case), the game starts but it displays nearly nothing (because of this hack).
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c index ed32ee2..cd34085 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -38,6 +38,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_draw); static void drawStridedFast(const struct wined3d_gl_info *gl_info, GLenum primitive_type, UINT count, UINT idx_size, const void *idx_data, UINT start_idx, INT base_vertex_index, UINT start_instance, UINT instance_count) { + + FIXME("(pt=%x, count=%d, idx_size=%d, start_idx=%d, base_vertex_index=%d, idx_data=%p, instance_count=%d)\n", primitive_type, count, idx_size, start_idx, base_vertex_index, idx_data, instance_count); + if (idx_size) { GLenum idxtype = idx_size == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT; @@ -758,7 +761,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co } else { - drawStridedFast(gl_info, state->gl_primitive_type, index_count, idx_size, idx_data, + if ((indexed && idx_data) || !indexed) drawStridedFast(gl_info, state->gl_primitive_type, index_count, idx_size, idx_data, start_idx, state->base_vertex_index, start_instance, instance_count); }
Best regards, Andras