VOGONS


dgVoodoo 2 for DirectX 11

Topic actions

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

Reply 3260 of 3952, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

Dege: have you considered making adding a profile in dgVoodooCpl.exe automatically copy over relevant DLLs?

Osprey wrote:

That's an elitist attitude. There's no reason why someone who has never used a wrapper before couldn't learn. When you're new to something, complex, wordy instructions can be overwhelming.

Learning to read complex wordy documentation is a pretty essential life skill. Telling people to practice it on something that's not harmful to screw up is actually a good idea.

Reply 3261 of 3952, by galneon

User metadata
Rank Newbie
Rank
Newbie
ZellSF wrote:

Learning to read complex wordy documentation is a pretty essential life skill. Telling people to practice it on something that's not harmful to screw up is actually a good idea.

Osprey gave three very simple steps that could get anyone able to extract an archive and explore a file system up and running with dgVoodoo 2, so in this case, the only difficulty involved is when a novice is made to read between the lines of a document more technical than they're used to in order to ascertain usage.

I like your new profile idea, but without adding options which may confuse some, it think it would need to inspect the executable to determine API.

Reply 3263 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

Well, the documentation coming with dgVoodoo might be "too much, too detailed" if someone is completely new to the wrapper and only wants to have a glance at it, giving it a quick try.
I think I'll move the docs inside a Doc folder and include a 'QuickGuide.html' with simplified practical instructions.

Indeed, WIP versions don't contain full docs, but WIPs are only incremental updates on the latest official version for people being already familiar with dgVoodoo, so I always include only the latest changes as docs.

ZellSF wrote:

Dege: have you considered making adding a profile in dgVoodooCpl.exe automatically copy over relevant DLLs?

Yes... I was even thinking on an installer. Clicking 'Next' button a few times and voila dgVoodoo could be 'there', installed.
But, since I don't want to copy wrapper dlls into system folders (DX ones couldn't even be copied there), I could only keep them in /Program Files/dgVoodoo2/
but then the CPL or some other extra application would always be needed for adding each game to dgVoodoo for usage.

franpa wrote:
Okay, after another reboot of the computer the game now works, I can get in to gameplay and actually play the game (without your […]
Show full quote

Okay, after another reboot of the computer the game now works, I can get in to gameplay and actually play the game (without your mod) without it crashing or freezing (I have no clue why system reboots are making the game work better). Your mod still triggers the games custom Exception Handler shortly after gameplay begins.

With your mod the your mod configured to stretched_ar for screen scaling, I am able to determine that there are 2 mouse coursers while the game is running. The Windows mouse courser and the games mouse courser. The games mouse courser only moves while the Windows mouse courser is in the top left quadrant of the display and you need to line the games mouse courser up with the menu items to interact with them.

Clicking "New Game' will change the mouse behaviour for the worst, the in-game mouse courser will no longer have its position updated as I move the Windows mouse courser. Instead I have to click to have the in-game mouse courser update and I have to guess where on the screen to click to make the in-game courser appear where I want it to.

The menu for choosing whether to play the Base Game or the Expansion, the Main Menu, and the sub-menu when clicking a menu option like "New Game" all react to Windows mouse courser movement across different sections of the display, so the offset is changing depending on what menu you're interacting with.

https://youtu.be/4CraExzzbr8 DgVoodo is not used in this video. (It looks like the menu UI rendering issue in Firestorm also applies to the base game UI, maybe Micorosoft buggered something up which made the problem worse or EA buggered it up when porting the game to Origin. You can see the mouse courser behaves correctly.

https://youtu.be/60snMN1nowU DgVoodo 2 v2.54 WIP 36 is used. I assume the games maximum gameplay speed setting disables the Frame Rate Limiter and your mod by default disables vsync? I believe that's why the gameplay was absurdly fast 🤣 (previous tests didn't exhibit absurdly fast gameplay).

Having the mouse behave correctly would be a massive help in trying to figure out why the games exception handler is triggered.

Thx for the videos! As far as I can see, this game has the same problem with dgVoodoo as some others (for example, Settlers 3, Requiem): cursor emulated by software.
Since the game thinks it's driving a hw mouse cursor, it only updates its screen when needed, like moving selection from one menu item to another. That's why the sw cursor only updates its position in those cases too, not continuously.
For the time being, the only way is to set 'Unspecified' scaling mode and 'Unforced' resolution in the CPL because then the mouse can be real hw one. 🙁

daniel_u wrote:
Dege wrote:

Indeed, old one looks nicer. I decided to resolve this problem by adding the possibility of dithering as a post process effect to dgVoodoo and set the default rendering quality to true 32bit.
So, by default everything would render nice but if one wanted some retro feel and look then dithering could be switched on.
In fact it all is working now, except one mysterious case in Glide which I'm struggling with.

Can dithering help fix/improve the way light color is displayed in SCPT ?

Thank you.

No, dithering is about retro feel and look in dgVoodoo... Dithering is a technique for improving the quality of color-banded low quality images and it was common in the old DX days for 16bit display modes.

Reply 3264 of 3952, by Osprey

User metadata
Rank Member
Rank
Member
ZellSF wrote:

Learning to read complex wordy documentation is a pretty essential life skill. Telling people to practice it on something that's not harmful to screw up is actually a good idea.

If you're ever tasked with writing the documentation for a company product and your employer tells you that it's too complex and unclear, just tell him that you're helping customers with an essential life skill and see where that gets you 😉. It's not so much the fact that the dgVoodoo documentation is complex and wordy; it's that it's unclear (no offense, Dege). MS7XWDC read all of the documentation and still didn't understand it. Even if there's a sentence that says what to do, it's buried in a sea of other technical information (much of which, like the compiler DLLs, isn't needed for most people), so it's hard for newcomers to realize which sentences to pay attention to and which to safely ignore. Documentation can be both clear and complex and wordy by doing what I suggested, which is putting the simplest instructions up front and then getting progressively more technical and granular as it goes on.

franpa wrote:

Let's get back on topic.

I'd argue that debating whether simpler instructions would help is on topic. That would likely be of benefit to more people than some of the other posts (pointing out glitches in obscure games that no one has heard of, etc.).

Last edited by Osprey on 2017-09-17, 20:46. Edited 1 time in total.

Reply 3265 of 3952, by Osprey

User metadata
Rank Member
Rank
Member
Dege wrote:

Well, the documentation coming with dgVoodoo might be "too much, too detailed" if someone is completely new to the wrapper and only wants to have a glance at it, giving it a quick try.
I think I'll move the docs inside a Doc folder and include a 'QuickGuide.html' with simplified practical instructions.

Thanks for listening and not taking offense, Dege. A Quick Guide sounds like a good idea. If you still have a Readme, may I suggest an opening line that reads something like "If you're new to dgVoodoo 2 and just want quick, simple instructions, see QuickGuide.html", just in case some users open the Readme first, out of habit.

If you separate out the simple, practical instructions into a QuickGuide.html, leaving the Readme*.html for more technical information, I wonder if you could then simply combine those three files into one. They're HTML files, so you could put links at the top of the page: "General" (that, when clicked, takes you to the section that has everything that was in Readme.html), "DirectX" (ditto for ReadmeDirectX.html) and "Glide" (ditto for ReadmeGlide.html). That would simplify your documentation and maybe eliminate the need to keep a separate Docs folder, since you'd have only two HTML files in the root folder, fewer than you have now.

Dege wrote:

Yes... I was even thinking on an installer. Clicking 'Next' button a few times and voila dgVoodoo could be 'there', installed.
But, since I don't want to copy wrapper dlls into system folders (DX ones couldn't even be copied there), I could only keep them in /Program Files/dgVoodoo2/
but then the CPL or some other extra application would always be needed for adding each game to dgVoodoo for usage.

If you decide to ever experiment with an installer, I have a lot of experience with Inno Setup and would be glad to help. I can't think of a good excuse for one, though, since, as you said, you can't copy the DirectX DLLs to the system folder and I think that most people just prefer copying the CPL to each game folder, as well. You could have an installer that copies the files to each game folder (so that users would run the installer once for each game that they want to set up with dgVoodoo 2), which could be a little convenient, but wouldn't do much besides copy the files for them. If it could somehow detect the DirectX version that the game uses (without launching it), automatically copying all required files would be useful, but I'm not sure that that's even possible.

What about an installer that, on first run, installs (or gives the option to install) all of the components that can go into the system folders (Glide DLLs, 3Dfx splash files, D3D compiler DLLs, D3DRM, etc.) and allows for setting up one DirectX game (i.e. copying files to the game's folder); then, can be run subsequent times to set up further DirectX games?

Reply 3266 of 3952, by MS7XWDC

User metadata
Rank Newbie
Rank
Newbie

I just stopped in to take a peek to see where the thread was going, and it looks like a more basic set of instructions might be coming, potentially even an iinstaller for the newbies to this scene such as I am. I've never even heard of this wrapper concept and did try my best, so I do appreciate all efforts to make it work for me, and possibly for other people that are completely new to this whole scene. thanks to everyone for any constructive help in this regard

Reply 3268 of 3952, by galneon

User metadata
Rank Newbie
Rank
Newbie
Osprey wrote:

I'd argue that debating whether simpler instructions would help is on topic. That would likely be of benefit to more people than some of the other posts (pointing out glitches in obscure games that no one has heard of, etc.).

This argument was productive and well worth having as it will lead to, at the very least, a quickstart guide for newbs, but let's not trivialize the importance of fixing glitches in obscure games (which often fix problems in other games). The goal is an accurate, comprehensive wrapper, after all--which becomes more realistic as more people find it accessible enough to use and discover new issues.

Reply 3269 of 3952, by MS7XWDC

User metadata
Rank Newbie
Rank
Newbie
DosFreak wrote:

See this post F1 2000 & F1 Championship Season 2000 (EA) - crashes for either running the game in software mode or mabye in D3D using dgvoodoo2 WIP (in 2015).

ah, if you had read that thread til the end, you would have seen i had already replied there as well 😀

so much for thorough reading, huh ?? 😀

MS7XWDC wrote:

im trying F12K & F1CS now

but have no idea on how to start dgV2

Reply 3270 of 3952, by Gagster

User metadata
Rank Newbie
Rank
Newbie

I decided to try the new dgVoodoo2 WIP37 out, and at last (thanks to the dgVoodoo.conf file that's included with WIP37 that can be edited in a text-editor) I can activate the option ForceNearestPointFilter.

With the Nearest Point Filtering, I can finally play older games like Warcraft 2 BattleNet Edition with 2x integer scaling, AND without the blurry bilinear filtering that always bothered me with most ddraw-wrappers. This is great news, because now retro-gaming with older Windows 95-titles suddenly became way more bearable.

I decided to test Delta Force Land Warrior yet again, and while the graphics and such seems ok when using forced resolution (the game originally had the now tiny max-resolution of 1024x768), the mouse-movement in-game gets somewhat broken during forced resolution. The cursor in-game moves way faster while aiming upwards and to the left in-game than while moving the cursor downwards or right. That does not happen without resolution forcing however with dgVoodoo2, so that's a strange bug indeed.

Finally, I have a question that may seem kind of dumb. It does not seem like dgVoodoo2 can do anything at all with games using SDL. Is there any way of "tricking" games such as OpenTyrian or Giana's Return to use dgVoodoo2 anyway, or would there be a need for an even different wrapper to manipulate the graphics in games using SDL?

CPU: i7-4790K
RAM: 16 GB
GPU: GeForce GTX 1080
OS: Windows 10 64 bit

Reply 3271 of 3952, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
Osprey wrote:
ZellSF wrote:

Learning to read complex wordy documentation is a pretty essential life skill. Telling people to practice it on something that's not harmful to screw up is actually a good idea.

If you're ever tasked with writing the documentation for a company product and your employer tells you that it's too complex and unclear, just tell him that you're helping customers with an essential life skill and see where that gets you 😉.

Oh it's not an excuse for sloppy documentation writing, but I am saying that bad documentation is not an excuse not to read it. You will have to learn to read bad documentation. Try asking your employer for an ELI5 version of paperwork you're supposed to deal with and see where that gets you.

Osprey wrote:
franpa wrote:

Let's get back on topic.

I'd argue that debating whether simpler instructions would help is on topic. That would likely be of benefit to more people than some of the other posts (pointing out glitches in obscure games that no one has heard of, etc.).

Obscure games might show otherwise unnoticed bugs that might affect many more games. Documentation is nice and all, but it's useless if dgVoodoo2 doesn't run the game you want to play.

Gagster wrote:
I decided to try the new dgVoodoo2 WIP37 out, and at last (thanks to the dgVoodoo.conf file that's included with WIP37 that can […]
Show full quote

I decided to try the new dgVoodoo2 WIP37 out, and at last (thanks to the dgVoodoo.conf file that's included with WIP37 that can be edited in a text-editor) I can activate the option ForceNearestPointFilter.

With the Nearest Point Filtering, I can finally play older games like Warcraft 2 BattleNet Edition with 2x integer scaling, AND without the blurry bilinear filtering that always bothered me with most ddraw-wrappers. This is great news, because now retro-gaming with older Windows 95-titles suddenly became way more bearable.

I decided to test Delta Force Land Warrior yet again, and while the graphics and such seems ok when using forced resolution (the game originally had the now tiny max-resolution of 1024x768), the mouse-movement in-game gets somewhat broken during forced resolution. The cursor in-game moves way faster while aiming upwards and to the left in-game than while moving the cursor downwards or right. That does not happen without resolution forcing however with dgVoodoo2, so that's a strange bug indeed.

Finally, I have a question that may seem kind of dumb. It does not seem like dgVoodoo2 can do anything at all with games using SDL. Is there any way of "tricking" games such as OpenTyrian or Giana's Return to use dgVoodoo2 anyway, or would there be a need for an even different wrapper to manipulate the graphics in games using SDL?

You really should look into DxWnd. It can be tweaked to do integer scaling and supports many games that use weird hacks that dgVoodoo2 hasn't implemented. It also has some SDL support though I've been very unsuccessful with using that.

Reply 3272 of 3952, by Gagster

User metadata
Rank Newbie
Rank
Newbie
ZellSF wrote:

You really should look into DxWnd. It can be tweaked to do integer scaling and supports many games that use weird hacks that dgVoodoo2 hasn't implemented. It also has some SDL support though I've been very unsuccessful with using that.

Yeah; I have actually used DxWnd myself for quite some time, but also did not get the included SDL-support up and running properly in those games with DxWnd. I previously used DxWnd in Red Alert 2 for not making the game crash while minimizing the game with the Windows-key (with RA2 maximized again without any wrappers, the image re-appeared pure black). Just now I switched from DxWnd to dgVoodoo2 on RA2, and it works great so far.

CPU: i7-4790K
RAM: 16 GB
GPU: GeForce GTX 1080
OS: Windows 10 64 bit

Reply 3273 of 3952, by franpa

User metadata
Rank Oldbie
Rank
Oldbie
Dege wrote:

Thx for the videos! As far as I can see, this game has the same problem with dgVoodoo as some others (for example, Settlers 3, Requiem): cursor emulated by software.
Since the game thinks it's driving a hw mouse cursor, it only updates its screen when needed, like moving selection from one menu item to another. That's why the sw cursor only updates its position in those cases too, not continuously.
For the time being, the only way is to set 'Unspecified' scaling mode and 'Unforced' resolution in the CPL because then the mouse can be real hw one. 🙁

Okay, that results in the in-game mouse courser being hidden and the Windows mouse courser being clearly visible. It doesn't fix interaction with the menus though. The games mouse courser (the one that the game responds to), even though it is now invisible, still seems to move haphazardly.

Here's an updated image and video to help convey the issue.

https://imgur.com/89Ty8bi
https://youtu.be/dDIvhI7MBDs

AMD Ryzen 3700X | ASUS Crosshair Hero VIII (WiFi) | 16GB DDR4 3600MHz RAM | MSI Geforce 1070Ti 8GB | Windows 10 Pro x64.

my website

Reply 3274 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

SDL should work but its default renderer seems to be OpenGL even on Windows.
(see https://www.libsdl.org/release/SDL-1.2.15/doc … sdlenvvars.html, for more, at least for SDL 1.x)
When I set SDL_VIDEODRIVER=directx environment variable in a command box and launched Giana's executable from there, then it worked for me:

Giana.png

It didn't animate perfect smoothly though, as if it had been out of vsync.

franpa wrote:
Okay, that results in the in-game mouse courser being hidden and the Windows mouse courser being clearly visible. It doesn't fix […]
Show full quote
Dege wrote:

Thx for the videos! As far as I can see, this game has the same problem with dgVoodoo as some others (for example, Settlers 3, Requiem): cursor emulated by software.
Since the game thinks it's driving a hw mouse cursor, it only updates its screen when needed, like moving selection from one menu item to another. That's why the sw cursor only updates its position in those cases too, not continuously.
For the time being, the only way is to set 'Unspecified' scaling mode and 'Unforced' resolution in the CPL because then the mouse can be real hw one. 🙁

Okay, that results in the in-game mouse courser being hidden and the Windows mouse courser being clearly visible. It doesn't fix interaction with the menus though. The games mouse courser (the one that the game responds to), even though it is now invisible, still seems to move haphazardly.

Here's an updated image and video to help convey the issue.

https://imgur.com/89Ty8bi
https://youtu.be/dDIvhI7MBDs

Thanks! But if I can see right, you upscaled the output by 'ImageScaleFactor', right?
I forgot to mention, if ImageScaleFactor (or its value coming from auto-calculation) is not 1 then hw cursor isn't usable, additionally to the cases I listed. I probably forgot to take it into account in the wrapper code when I developed the imagescalefactor feature, so it's in a buggy state.
Since this issue appears in more and more games, I'm going to try to address it somehow in the next version. Till then, the only workaround is 'unspecified scaling mode' + 'imagescalefactor = 1' + 'unforced resolution'.

---------

As for the installer, it still needs more considerations... I don't find it useful in the current concept... 🙁

Loney974 wrote:
https://s26.postimg.org/cfm4n5ty1/Commandos2_dg_Voodoo2.54_windowed_mode.png […]
Show full quote

Commandos2_dg_Voodoo2.54_windowed_mode.png

Sorry, I forgot about this: I was going to try it myself but the game always crashed for me for some reason, I should reinstall it.
Anyway, since updating the window area is totally in the hands of DX11 (DXGI), I hardly thinks its a dgVoodoo bug. My tip it's caused by the compat mode.

Reply 3275 of 3952, by Osprey

User metadata
Rank Member
Rank
Member
Dege wrote:

Sorry, I forgot about this: I was going to try it myself but the game always crashed for me for some reason, I should reinstall it.
Anyway, since updating the window area is totally in the hands of DX11 (DXGI), I hardly thinks its a dgVoodoo bug. My tip it's caused by the compat mode.

See my reply to the original post:

Osprey wrote:

I can confirm that behavior with Commandos 2 in v2.54 and WIP36. It doesn't happen when the game is run without any wrapper and it doesn't happen with aqrit's wrapper, so it's definitely dgVoodoo. I've tried changing nearly every setting in dgVoodooCpl.exe, so it doesn't appear to be correctable with any setting.

Reply 3276 of 3952, by franpa

User metadata
Rank Oldbie
Rank
Oldbie

@Dege https://imgur.com/QJydImj I don't see the setting you mention but here is how it is configured.

AMD Ryzen 3700X | ASUS Crosshair Hero VIII (WiFi) | 16GB DDR4 3600MHz RAM | MSI Geforce 1070Ti 8GB | Windows 10 Pro x64.

my website

Reply 3278 of 3952, by franpa

User metadata
Rank Oldbie
Rank
Oldbie

It's in binary though D: why does the CPL program write it in binary? What is wrong with human readable language like English!? I know it can read plain text and binary config files, why does it write binary files in the first place though!? Unless you're a crazy Japanese developer (Japanese devs are fiercely protective of their precious configuration files) I don't understand why you would make it write the file in binary.

AMD Ryzen 3700X | ASUS Crosshair Hero VIII (WiFi) | 16GB DDR4 3600MHz RAM | MSI Geforce 1070Ti 8GB | Windows 10 Pro x64.

my website

Reply 3279 of 3952, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
franpa wrote:

It's in binary though D: why does the CPL program write it in binary? What is wrong with human readable language like English!? I know it can read plain text and binary config files, why does it write binary files in the first place though!? Unless you're a crazy Japanese developer (Japanese devs are fiercely protective of their precious configuration files) I don't understand why you would make it write the file in binary.

In the WIP36 and WIP37 archives there's a plain text configuration file. dgVoodoo2 will read this if it's in the same directory as the game (but dgVoodooCpl will still override it with a binary file).

There's a separate thread for the WIP builds though...