Reply 3560 of 3949, by Dege
wrote:Drakan must be doing something special that those effects don't show up natively with modern drivers. The lens flare sample from […]
Drakan must be doing something special that those effects don't show up natively with modern drivers. The lens flare sample from DirectX 6.1 SDK works out-of-the-box on my end, but I'm also experiencing significant slowdown running it via dgVoodoo, look at this side-by-side comparison:
I still didn't have the chance to check out Drakan, but the frame drops for DX6/7 SDK samples occur because the text itself describing the windows size and fps are written through Surface::GetDC/ReleaseDC (GDI interop) which has relatively large overhead through dgVoodoo. The larger window the more performance drop.
DX8 samples use textures for the texts as DX8 itself doesn't support GetDC/ReleaseDC and so the performance is much better there.
wrote:Hi Dege I ran into a problem with soldiers of anarchy (I saw that you fixed a crash with it not that long ago so I'm hoping you […]
Hi Dege
I ran into a problem with soldiers of anarchy (I saw that you fixed a crash with it not that long ago so I'm hoping you still have the game around 😀 )
For context: the game uses Direct3D7, on maps (out of menus) it tries to set a directional light (at 0x00613A4F in version 1.1.2.178) with the parameters:d3dLight.dltType = 3;
d3dLight.dcvDiffuse.r = v6[15];
d3dLight.dcvDiffuse.g = v6[16];
d3dLight.dcvDiffuse.b = v6[17];
d3dLight.dcvDiffuse.a = 0.0;
d3dLight.dcvSpecular.r = 0.0;
d3dLight.dcvSpecular.g = 0.0;
d3dLight.dcvSpecular.b = 0.0;
d3dLight.dcvSpecular.a = 0.0;
d3dLight.dcvAmbient.r = 0.0;
d3dLight.dcvAmbient.g = 0.0;
d3dLight.dcvAmbient.b = 0.0;
d3dLight.dcvAmbient.a = 0.0;
d3dLight.dvPosition.x = 0.0;
d3dLight.dvPosition.y = 0.0;
d3dLight.dvPosition.z = 0.0;
d3dLight.dvDirection.x = v6[22];
d3dLight.dvDirection.y = v6[23];
d3dLight.dvDirection.z = v6[24];
d3dLight.dvRange = 0.0;
d3dLight.dvFalloff = 1.0;
d3dLight.dvAttenuation0 = 0.0;
d3dLight.dvAttenuation1 = 0.0;
d3dLight.dvAttenuation2 = 0.0;
d3dLight.dvTheta = 0.0;
d3dLight.dvPhi = 0.0;
This looks as such with native DDraw
But with dgVoodoo2 (either the WIP44 or the 55 version regardless of settings):
I tried playing around with the parameters of the light set just above the call (again with game version 1.1.2.178) (though I must declare I'm not experienced with Direct3D7)
I could get the desired effect with native DDraw (red light for example) but dgVoodoo seemed to disregard any change I made to this call (even changing the light type) always stayed like on the picture.I tried all the settings I could think of in the cpl and otherwise but if I'm not the first and someone found a fix to a similar problem I would be quite curious about it.
(As an endnote I admire the work you did bringing back the games of our childhood I hope you'll keep at it 😀 )
Hi Adam,
I still have the game installed. 😀
So ti seems to be a lighting problem. How could I reproduce it? Or how did you debugged it? 😀