VOGONS


First post, by Ringtail

User metadata
Rank Newbie
Rank
Newbie

I am encountering a severe error with the game Lego Rock Raiders. Before my last report about its transparency issues with dgVoodoo, I hadn't played the game seriously for several years. I remember it had an old issue where it used to freeze when using dgV, but I hadn't heard about it for a while so I had assumed it had been fixed. However, I recently started playing again after 2.79.2's release, and it turns out it's still an issue and just hadn't been reported.

At seemingly-random points during gameplay, the screen will completely freeze, and will never unfreeze. The game continues running, but visually it has crashed, and the game must be exited completely. There does not seem to be any particular cause to this, except that it often happens either after playing a level for a longer period of time, or when there is a lot of activity and many units in the level. I have had it happen anywhere between 5 and 48 minutes into a level. It happens often enough to prevent me from really being able to play the game - 5 out of the last 9 attempts at playing a level to completion have resulted in a freeze.

Here is a short video showing three times it has crashed, most of which happened during panning the camera (though another happened after clicking on a menu, and the most recent one happened while doing nothing). Unfortunately this doesn't show much, besides what exactly happens when it freezes. After all of these points, the game's graphics never unfroze.

I have been playing with a tool called OpenLRR a decompilation of the game that includes an error log (the freeze happens as frequently with or without the tool, and the tool's developer has been unable to find the source of this issue). The most recent time, which happened 33 minutes into a level, I was able to get this error log from it:

Gods98::Image_GetScreenshot called
Gods98::Error_SetDXError called
Gods98::SE called
C:\OpenLRR\src\openlrr\engine\util\Dxbug.cpp(70): Warning: A DirectX error was set in module C:\OpenLRR\src\openlrr\engine\drawing\Images.cpp at line no 643.
Error : DDERR_GENERIC (code -2147467259)
DX Module : Direct Draw
Error Description : There is an undefined error condition.

Gods98 is the engine the game uses. Line 643 in that file appears to be the following:

642	if ((hr = DirectDraw()->CreateSurface(&desc, &surf, nullptr)) != DD_OK) {
643 CHKDD(hr);
644 return;
645 }

The developer of the tool has stated that it also gives this error while debugging when the freeze happens:

D3D11: Removing Device

Unfortunately this is all the information I have. All the above was while running with dgVoodoo 2.79.2, but it's been an issue for a number of years. I have never encountered this freeze when not running the game with dgVoodoo. If more information is needed I can try testing more and seeing if the error logs give the same results each time.

Reply 2 of 3, by Dege

User metadata
Rank l33t
Rank
l33t

I remember fixing this years ago. I cannot reproduce the hangup, but anyway, I had a guess and looked at the code again. I could create a simple app test-case that called into the driver with invalid data (my driver didn't crash).
So, I attach the fixed version for testing purposes, could you plz try it?

http://dege.fw.hu/temp/dgVoodoo2_79_2_LRR.zip