narzoul / DDrawCompat

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11
BSD Zero Clause License
893 stars 67 forks source link

Nuclear Strike problems #182

Open BEENNath58 opened 1 year ago

BEENNath58 commented 1 year ago

Edited because earlier was a case of nGlide.

When I try to launch the game (by Electronic Arts) with DDrawCompat, the game starts and minimizes itself. In other cases, it just crashes. Caau look into it?

BEENNath58 commented 1 year ago

Using DxWnd and removing their DX hooking, I got the game to run fine. However the original name of the thread, still applies: The game runs slowly.

narzoul commented 1 year ago

I don't know, it doesn't use Direct3D. It just locks a surface and takes 90-100 ms to unlock it. It's almost as if it's intentionally limited to 10 fps, or its software renderer is just that slow for some reason. Maybe it's some timer issue, but I couldn't even catch it using any timers that I know of with API Monitor. There's not much I can do about it.

BEENNath58 commented 1 year ago

I tested on Win98 at 640x480 and it ran significantly better. I am not sure what's going on either. The only difference I saw was, on new Windows the game is rendering "water platform texture" like things (something that is floating on water), which is not present on 98. Could this artifact be the reason?

This is the game on Win98 (ignore gameplay quality) https://user-images.githubusercontent.com/64649734/217525388-3c53a9ff-4bee-46b0-a7ba-1df548e305e3.mp4

narzoul commented 1 year ago

As far as I can tell, this game only supports Glide for hardware acceleration. See e.g. here: http://www.3dgw.com/game/gog.php3 Is it possible your Win98 system is using that?

If there is some secret/hidden Direct3D option, I have no idea how to activate it. I guess you could try to temporarily get rid of the various DLLs needed for Direct3D and Glide, and check if the game is still running at the same speed. Or just see what kind of DLLs are loaded by the process, but I don't know of any software that can check that on Win98. An API trace would also be helpful, but again, no idea how to get that on Win98.

BEENNath58 commented 1 year ago

If there is some secret/hidden Direct3D option, I have no idea how to activate it. I guess you could try to temporarily get rid of the various DLLs needed for Direct3D and Glide, and check if the game is still running at the same speed.

Actually I did that in the video, i.e, rename glide2x.dll (you can see the thumbnail has a file named Galide2x.dll). The game now detects only DirectX8 thereafter. There is definitely speed difference, but the difference isn't large between software and Glide.