VOGONS


dgVoodoo 2 for DirectX 11

Topic actions

  • This topic is locked. You cannot reply or edit posts.

Reply 3560 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
UCyborg wrote:
Drakan must be doing something special that those effects don't show up natively with modern drivers. The lens flare sample from […]
Show full quote

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:

AcwNsgs.png

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.

szabozadam 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 […]
Show full quote

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
h983wrjya2wzycdzg.jpg
But with dgVoodoo2 (either the WIP44 or the 55 version regardless of settings):
qovm0jbkcixyxjqzg.jpg
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? 😀

Reply 3561 of 3949, by UCyborg

User metadata
Rank Member
Rank
Member

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.

Oops, you're right about the reason for performance hit with older DX SDK samples, I posted too fast... Either way, lens flares in Drakan only render with more recent versions of dgVoodoo while that DX SDK sample works correctly with older ones as well. So I guess it isn't a good comparison when it comes to apparently Drakan specific quirk.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 3562 of 3949, by szabozadam

User metadata
Rank Newbie
Rank
Newbie

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? 😀

On my end (I tried this on two separate computers one with an old AMD gpu and win7 and on a geforce/win8 machine) no special actions are needed to reproduce, just load up a map either in the editor or just starting a new game should result in the effect (I must admit it is a subtle difference though I didn't notice there was something wrong for quite some time), the landscape/ground lacking lighting is apparent on any map you get into if you compare the game rendered with the windows DDraw.dll (If it works naively on your end). (the tent having light on the inside in the pictures I uploaded was actually where I noticed something was off)

What I did to trace the problem to that particular call, was removing/skipping the LightEnable call further down execution (I use ollyDbg for this) for this particular light which resulted in the game only having ambient light in the scenes and no highlights on the bottom part of objects (like the wheels of the jeep or whatever it is called), furthermore changing the color, direction, position and type (to a point light) of the light which worked as expected only when I didn't load the dgVoodoo supplied DDraw.dll , I did not look into the dgvoodoo dlls I dont really know where the parameters get lost 😒 (a think they are getting "lost" because no change made to these values resulted in any difference if I used the dgVoodoo Direct3D7 implementation)

Thank you for taking a look 😀

Reply 3565 of 3949, by teleguy

User metadata
Rank Member
Rank
Member

Is there any way dgVoodoo could override a game's LOD system?

It's pretty jarring when you force high resolutions and the game only provides low res models and textures until you're at point blank range.

My guess is it's not possible though, at least not without causing other problems, right?

Reply 3567 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

Alchemist runs nicely with dgVoodoo2 and looks beautiful with integer scaling:

alchemist.png
Filename
alchemist.png
File size
73.99 KiB
Views
3214 views
File license
Fair use/fair dealing exception

Sadly I wouldn't call it playable since I can't get music working. I didn't try to hard either since this is really a game better suited for DOSBox or PCem.

Thandor: The Invasion also looks great:

thandor 2018-05-04 20-01-41-64.jpg
Filename
thandor 2018-05-04 20-01-41-64.jpg
File size
691.73 KiB
Views
3214 views
File license
Fair use/fair dealing exception

dgVoodoo2's D3D resolution forcing is the only way to force rendering resolution on this since Glide wrappers (including dgVoodoo2) do not like resolution forcing in this game. There's supposedly also a way to change resolution via hex editing files. dgVoodoo2 would be perfect for playing this game, however Vista+ broke the sound in this game. So not really playable 🙁.

Castle Strike only supports some arbitrary resolutions, including oddly enough one hor+ widescreen resolution, 1280x720 here forced to 2560x1440:

Castlestrike 2018-05-04 21-05-32-84.jpg
Filename
Castlestrike 2018-05-04 21-05-32-84.jpg
File size
1.23 MiB
Views
3214 views
File license
Fair use/fair dealing exception

The UI stretch and bad text positioning may not make this the ideal way to play the game though, it's probably better to stick to 1600x1200 integer scale forced resolutions.

Initial D: Mountain Vengeance does not work, but it's a DllMain game.

Reply 3568 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

Animorphs works perfectly with resolution forcing (usually 640x480 limited), no AA though:

Animorphs 2018-05-04 22-19-33-69.jpg
Filename
Animorphs 2018-05-04 22-19-33-69.jpg
File size
414.2 KiB
Views
3195 views
File license
Fair use/fair dealing exception

Disney's Aladdin in Nasira's Revenge, also perfect, though this game has native high-res support:

aladdin 2018-05-04 22-00-04-06.jpg
Filename
aladdin 2018-05-04 22-00-04-06.jpg
File size
290.87 KiB
Views
3196 views
File license
Fair use/fair dealing exception

Disney's The Emperor's New Groove uses the same engine as Aladdin, so same result:

groove 2018-05-04 22-28-13-71.jpg
Filename
groove 2018-05-04 22-28-13-71.jpg
File size
182.11 KiB
Views
3195 views
File license
Fair use/fair dealing exception

Far Gate works perfectly, usually limited to 1600x1200:

FarGate 2018-05-04 22-41-53-33.jpg
Filename
FarGate 2018-05-04 22-41-53-33.jpg
File size
482.46 KiB
Views
3196 views
File license
Fair use/fair dealing exception

Hellboy has some issues with switching into windowed mode when changing display mode, looks great though:

hellboy 2018-05-04 22-57-03-07.jpg
Filename
hellboy 2018-05-04 22-57-03-07.jpg
File size
329.25 KiB
Views
3195 views
File license
Fair use/fair dealing exception

Reply 3569 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

The Outforce works great. It has native high resolution (and widescreen) support, but dgVoodoo2 helps with its bad UI scaling. Here internal resolution 1280x720 forced to 2560x1440:

Outforce_w2k 2018-05-06 00-55-14-08.jpg
Filename
Outforce_w2k 2018-05-06 00-55-14-08.jpg
File size
403.36 KiB
Views
3105 views
File license
Fair use/fair dealing exception

State of War is definitely a bit worse on the resolution support side of things, only allowing a choice between three resolutions: 640x480, 800x600 and 1024x768. It saves the chosen resolution in "State of War.cfg". It'll actually support any resolution you choose if you edit this file with a hex editor. Game is 2D, so it only benefits from dgVoodoo2's integer scaling and that's sort of hard to tell in a jpg screenshots (this game uses too many colors for png to be effective). Here's 1280x720 integer scaled to 2560x1440:

State of War 2018-05-06 00-50-14-48.jpg
Filename
State of War 2018-05-06 00-50-14-48.jpg
File size
1.22 MiB
Views
3105 views
File license
Fair use/fair dealing exception

NickToons Racing works great, usually limited to 1280x1024 (though there's a hex edit method available for higher resolutions), here running at 1920x1440:

ToonsDX7 2018-05-06 02-08-43-58.jpg
Filename
ToonsDX7 2018-05-06 02-08-43-58.jpg
File size
230.94 KiB
Views
3097 views
File license
Fair use/fair dealing exception

Lander works with resolution forcing, both D3D and Glide renders. Needs ExtraEnumeratedResolutions+DisableDefaultResolutions or resolution enumeration in settings will crash. Usually limited to 1600x1200 with bad UI scaling. Antialiasing creates font glitches in D3D render, so it's not enabled in this 640x480 forced to 1920x1440 screenshot:

lander 2018-05-06 02-51-23-37.jpg
Filename
lander 2018-05-06 02-51-23-37.jpg
File size
226.33 KiB
Views
3091 views
File license
Fair use/fair dealing exception

Reply 3570 of 3949, by batterymandark

User metadata
Rank Newbie
Rank
Newbie

Hi Dege, I figured out the white texture problem in GTA 3, since I later figured out it also had problems with some car textures and car engine textures. And guess what, most of it was my own fault, so it was the updater.
I'm reuploading the updater , and it shouldn't be a problem since its a community patch from steam that is just stored in one SFX archive. : https://1drv.ms/u/s!Agj8jUvjAJjznHd0v6YrKLe_Su3j

Also after the windows latest update, I think GTA3 runs a little better. but I also run it with the ATI radeon setting with 64MB VRAM , and also forcing off Crossfire on my HD5970 in amd control settings for the game,
as it seems , but not 100% sure, dgvoodoo 2 enable crossfire in its own way. like running secondary gpu on demand, and not allways on.

Reply 3571 of 3949, by stranno

User metadata
Rank Member
Rank
Member

Any idea for Hasbro Interactive's Battleship?

Its a software/direct3D 7 game. Limited to 640x480 in D3D and a few more in software.

2018-05-06_16-21-21.jpg

dgVoodoo virtual adapter appears in menu options but the directdraw menu and direct3d ingame dont seem to be hooked. I tried to add extra-resolutions but they dont show on that menu.

The game has another config file where you can set different resolutions, tho it doesnt seems to work at all.

Reply 3572 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
szabozadam 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 […]
Show full quote

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;

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.

Fixed. It was a bug in dgVoodoo, based on misunderstanding the ambiguous documentation on the relationship of predefined state blocks and lights.
The game sets the light in question once, and then saves that into a state block. Then it re-applies that later, each time rendering a game/editor frame. dgVoodoo didn't save all the data needed for the light so it never got set again.
I'll include it in the patch version.

Reply 3576 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

Battleship Surface Thunder supports resolution forcing, but you get artifacts with forced AA and texture filtering. This is 1366x768 (the game is picky about which resolutions it allows) forced to 2732*1536:

Battleship2 2018-05-07 19-31-04-29.jpg
Filename
Battleship2 2018-05-07 19-31-04-29.jpg
File size
570.92 KiB
Views
2928 views
File license
Fair use/fair dealing exception

It needs you to do this:
Re: Tech demos - general discussion
And if you're on Windows 8 or 10 it needs the Disable8And16BitModes compatibility fix.

Still only runs at 20 FPS here though. Timing compatibility issue? By design? Also suffers from double cursor though that's probably easy enough to work around. Widescreen (if you edit DisplaySettings.ini) is vert- 🙁

Reply 3578 of 3949, by szabozadam

User metadata
Rank Newbie
Rank
Newbie
Dege wrote:

Fixed. It was a bug in dgVoodoo, based on misunderstanding the ambiguous documentation on the relationship of predefined state blocks and lights.
The game sets the light in question once, and then saves that into a state block. Then it re-applies that later, each time rendering a game/editor frame. dgVoodoo didn't save all the data needed for the light so it never got set again.
I'll include it in the patch version.

You are the best! 😀

Reply 3579 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
brad86 wrote:
... Light beams go straight through Sam. You can see this in the vent on the first level. You won't notice it much through the g […]
Show full quote
awgamer wrote:
brad86 wrote:

( Well, close enough ).

What's off?

...
Light beams go straight through Sam. You can see this in the vent on the first level. You won't notice it much through the game unless you try to.
...

It depends on the virtual 3D card: beams go through Sam with every video card (including GeForce FX5700 Ultra) except GeForce4 Ti 4800.

V15UAL K3YS wrote:
Dege wrote:

Works perfectly for me on AMD and Intel. On nVidia I get the same flashing dotted appearance as you.
I know where the error occurs during rendering but don't know why. I debugged the wrong pixels by the graphics debugger but even debugging the pixel shader yielded what was expected.
Seems to be an nVidia-flaw. 😕

That's unfortunate; would there be any possible workaround? It normally works fine without dgvoodoo2 other than the menus running slow (such as certain menus running as slow as 2 fps). The beta version of Road Wars that uses DirectX 6.1 doesn't have this problem.

https://www.youtube.com/watch?v=1Qo6q0PL-mg

I cannot workaround this on nVidia, no matter what I do. Pixel shader(s) run erroneously. I disabled alpha testing in the game, that seems to be a good workaround. 😀
http://dege.fw.hu/temp/RoadWars_NoAlphatest.zip