Hi,
> Also please attach a full +ddraw log to the bug report. If it is too big
> compress it. bzip2 should do a pretty decent job, if all fails try lrzip.
OK, done!
> If the testing doesn't reveal anything, look out for IDirectDraw::GetCaps
> calls in the logs or IDirect3Dx::EnumZBufferFormats. IDirectDraw::GetCaps
> returns a DDCAPS structure which has dwZBufferBitDepths containing some flags
> for z buffer bit depths. EnumZBufferFormats calls a callback multiple times
> with available DDPIXELFORMAT structures. The application may not like some
> flags we set there.
The Sims calls EnumDevices and I presume calls EnumZBufferFormats within the callback for each device:
trace:ddraw:d3d3_EnumDevices Enumerating WineD3D D3DDevice interface.
trace:ddraw:d3d3_EnumZBufferFormats iface 0x13d04c, device_iid {a4665c60-2673-11cf-a31a-00aa00b93356}, callback 0x586a7d, context 0xabc198.
trace:ddraw:d3d7_EnumZBufferFormats iface 0x13d048, device_iid {a4665c60-2673-11cf-a31a-00aa00b93356}, callback 0x586a7d, context 0xabc198.
trace:ddraw:d3d7_EnumZBufferFormats Asked for SW device.
trace:ddraw:PixelFormat_WineD3DtoDD Converting wined3d format 0x52 to DDRAW.
trace:ddraw:PixelFormat_WineD3DtoDD Returning: ( DDPF_ZBUFFER , Z bits : 16)
trace:ddraw:d3d7_EnumZBufferFormats Enumerating wined3d format 0x52.
trace:ddraw:d3d7_EnumZBufferFormats Format enumeration cancelled by application.
trace:ddraw:d3d3_EnumDevices Enumerating HAL Direct3D
device.
trace:ddraw:d3d3_EnumZBufferFormats iface 0x13d04c, device_iid {84e63de0-46aa-11cf-816f-0000c020156e}, callback 0x586a7d, context 0xabc198.
trace:ddraw:d3d7_EnumZBufferFormats iface 0x13d048, device_iid {84e63de0-46aa-11cf-816f-0000c020156e}, callback 0x586a7d, context 0xabc198.
trace:ddraw:d3d7_EnumZBufferFormats Asked for HAL device.
trace:ddraw:PixelFormat_WineD3DtoDD Converting wined3d format 0x52 to DDRAW.
trace:ddraw:PixelFormat_WineD3DtoDD Returning: ( DDPF_ZBUFFER , Z bits : 16)
trace:ddraw:d3d7_EnumZBufferFormats Enumerating wined3d format 0x52.
trace:ddraw:d3d7_EnumZBufferFormats Format enumeration cancelled by application.
trace:ddraw:d3d3_EnumDevices End of enumeration.
I don't know if this looks sensible, though.
I see from the code that there are a lot of "gotchas" (both in d3d7_EnumZBufferFormats and d3d3_EnumDevices) for a number of games expecting things to happen in specific sequences and
containing specific responses.
I wonder if the Sims is going to turn out to be another.
Cheers,
Ralph