Greetings,
I maintain several ddraw apps in the Application Database. While most of the problems introduced by Wine 0.9.16 have been fixed, some still remain.
Command & Conquer and C&C: Red Alert When exiting the game, a messagebox displays: 'Unregonized Direct Draw result code: 1' A demo of Red Alert is available here: http://appdb.winehq.org/appview.php?versionId=4026 These two games, along with 'Warlords IIII: Darklords Rising' also have a strange SMP problem. In earlier Wine versions, these games would stop redrawing at some point. This also happens in Wine 0.9.16, but sometimes an error message is displayed instead, and then Wine receives a page fault.
Emperor: Battle for Dune This game requires native d3drm.dll, which does not work anymore. Problems with this file was mentioned on this list a few days ago.
Heroes of Might and Magic IV This game now displays a File menu when run in full-screen, which it is only supposed to do when run in a window. If I change the game's resolution, the menu disappears, but if I change it back to the resolution it had when it was started, the File menu is displayed again. Because of this menu, the game window is moved downwards, so the bottom part of the game is not displayed.
Warcraft II Battle.net Edition The title screen is no longer displayed; it shows a black screen instead. This also happens with some of the campaign intro screens. The rest of the game seems to work as before.
The new ddraw code fixes redrawing problems in at least a dozen games, and makes some of them faster, so it was a very good thing! :)
Regards,
Alexander N. Sørnes
On Fri, Jun 30, 2006 at 05:11:24PM +0200, Alexander Nicolaysen Sørnes wrote:
... fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock
... fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock
this are also the last words of Planescape Torment when starting up (black screen, then end right before the menu would appear)
Am Freitag 30 Juni 2006 17:28 schrieb Christoph Frick:
On Fri, Jun 30, 2006 at 05:11:24PM +0200, Alexander Nicolaysen Sørnes wrote:
... fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock
... fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock
this are also the last words of Planescape Torment when starting up (black screen, then end right before the menu would appear)
Wined3d writes them every time when the device is destroyed. I have no idea who added them and why, but I think they should be removed. I don't see anything wrong in destroying the primary stateblock when the device is destroyed :-)
Stefan
Hi,
Command & Conquer and C&C: Red Alert When exiting the game, a messagebox displays: 'Unregonized Direct Draw result code: 1' A demo of Red Alert is available here: http://appdb.winehq.org/appview.php?versionId=4026 These two games, along with 'Warlords IIII: Darklords Rising' also have a strange SMP problem. In earlier Wine versions, these games would stop redrawing at some point. This also happens in Wine 0.9.16, but sometimes an error message is displayed instead, and then Wine receives a page fault.
I looked at that, and it is a reference counting issue. Red alert deals nicely with its surfaces and the ddraw object itself, but it creates a palette and doesn't release it. A palette holds a reference to the DirectDraw interface it was created from, this is shown by a test case I sent some days ago. Because the palette isn't released, the final release call of the DirectDraw interface returns 1 instead of the apparently expected 0. On windows 95 it apparently gets a final refcount of 0, I could imaging that reference counting is different in older ddraw interfaces, or that there is some call which implicitly releases all palettes(I can only imaging IDirectDraw::RestoreDisplayMode)
This worked in the old directdraw version because it (incorrectly) didn't AddRef the device when a Palette was created.
Hi,
I looked at that, and it is a reference counting issue. Red alert deals nicely with its surfaces and the ddraw object itself, but it creates a palette and doesn't release it. A palette holds a reference to the DirectDraw interface it was created from, this is shown by a test case I sent some days ago. Because the palette isn't released, the final release call of the DirectDraw interface returns 1 instead of the apparently expected 0. On windows 95 it apparently gets a final refcount of 0, I could imaging that reference counting is different in older ddraw interfaces, or that there is some call which implicitly releases all palettes(I can only imaging IDirectDraw::RestoreDisplayMode)
This worked in the old directdraw version because it (incorrectly) didn't AddRef the device when a Palette was created.
I have an update on that: A quick test showed that while IDirectDraw7::CreatePalette addrefs the interface as shown in my refcount test, IDirectDraw::CreatePalette doesn't do so. So the 2 DirectDraw interface versions behave differently here.
This is related to the refcounting issue Star wars racer is having: http://bugs.winehq.com/show_bug.cgi?id=5007