===============================================================================
dgVoodoo 2.53: Glide, DirectDraw/Direct3D and D3D8 to Direct3D11 Wrapper
Released: September 11, 2016
Author: Dege

Copyright (c) 2013-2016
===============================================================================

Table of contents

1. Redistribution rights
2. Features
3. Requirements
4. Test results
5. Usage
6. Configuring
7. Resolution overriding
8. General setup options
9. General tips and known issues
10. Change log

===============================================================================


1. Redistribution rights

Files of dgVoodoo can be redistributed freely as far as they are kept together, remain unmodified and unrenamed. Namely, only the full package can be redistributed in the form as it is!

If you would like to utilize them in publicly available custom solutions or packages, like game patches or anything else, then PLEASE ask me for permission, furthermore mention its original source in your package along with the following download link:

http://dege.fw.hu/

Official dgVoodoo forum where you can contact me is at:

http://www.vogons.org/
http://www.vogons.org/viewtopic.php?f=9&t=34931&hilit=dgvoodoo"

---------------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ----------------------

Very BIG THANKS must go to the community of Vogons for helping me a lot in testing during the development! Thanks Guys, I couldn't have proceed so far without such a great quality assurance!

And I append a new sentence here to emphasize it again, especially for testing my DX8 implementation and supplying me with ideas, tips and various informations on several games!!!

---------------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ----------------------

2. Features

dgVoodoo 2 is a wrapper for old graphics API's for Windows Vista/7/8/10.

This wrapper can use Direct3D 11 with different device types as wrapping output:

The API's it currently can wrap are:

For both Glide and DirectX, dgVoodoo pushes as many emulation work to the GPU as possbile. Thus, the entire internal 3Dfx GPU logic is mapped to pixel shaders for Glide emulation, and all the fixed function vertex & pixel processing pipeline is implemented by shaders for DirectX emulation (when possible).
dgVoodoo basically can work in two ways:

If dynamic shader compiling is available (see Usage) then dgVoodoo can work with specialized shaders requiring much less GPU power, providing much better performance, especially on weaker video cards.


3. Requirements

Optional and recommended:

4. Test results

We can examine this in two aspects:


5. Usage

There is no installer for dgVoodoo beacuse you can copy its dlls anywhere you want (to use). If u like it and want to use as the only global Glide wrapper on your machine then copy Glide dlls to the system folder. For DirectX emulation only a local installation is possible since the DirectX dlls CANNOT be copied to the system folder (see DirectX readme).

A Glide wrapped application can start up either in windowed or full screen mode (it is controlled by setup, see later). Also, you can switch between them during the gameplay by Alt-Enter. See 'Known issues' for more.

The same is true for wrapped DirectX applications, but it is a more complicated case, see DirectX readme.

Glide and DirectX dlls can co-work inside a process so the same versions of them have to be used within a folder. If one of them detects the other with different version then it refuses to initialize and work. Co-work is useful for applications that use DirectDraw for some initial in-game menu and Glide for 3D rendering.

If you use dgVoodoo on Windows 10 then dynamic shader compiling is automatically available because D3DCompiler_47 is part of the operating system.
For preceding Windows versions (Vista, 7, 8) you need to download it manually and then, you can copy this dll into each game folder next to the wrapper dlls but the best practice is to copy it into

if it is not already there by the result of the installation of some other software.
Note that dgVoodoo supports both D3DCompiler_43 and D3DCompiler_47. _43 is supported only because of compatibility with users having it downloaded and copied into their system folder previously.

Utilizing dynamic shader compiling is strongly recommended and even unavoidable to get all DX8 level features to work. If dgVoodoo cannot find D3DCompiler then it can use only its generalized precompiled shaders just like versions before 2.5. If dgVoodoo finds a supported compiler dll then it can adapt to the current circumstances and compile specialized shaders providing maximum GPU performance.


6. Configuring

As different options might wanted to be used for particular applications, I kept the concept of local/global configurations (might be familiar from old dgVoodoo). The configuration data is not stored in the dlls themself anymore. It is in a separate file named 'dgVoodoo.conf'. All of the Glide and DirectX dlls uses this file.

When the Glide or DirectX wrapped application starts, dgVoodoo tries to read config data. The search paths and the order for the config file are the following:

If the config file can be found in none of them then the default config is used.

In dgVoodooSetup you can choose a folder where you can save the current configuration. After you chose a folder, it remains in the list permanently. By default the user's application data folder is selected.

If an application tolerates losing focus without closing/minimizing itself, you can configure it dynamically: when the setup starts up it builds a list of detected running Glide/DirectX wrapped applications and insert it into the folder selector combobox. When you select such a running instance then the current state of the application is read as config and most of the options can also be changed. So, you can set resolution, msaa, brightness, etc on the spot without restarting the application (configurable items depend on emulation type). When an option changes, it takes effect at once. If the dialog gets cancelled or an other config folder/instance is selected, all the changes gets cancelled as well.

You can always use the 'Apply' button to save the current config to the selected folder or running application without exiting the setup. So, the setup program is quite like a control panel. Important to note:

A folder inserted formerly into the list can be removed. Also, list of the running instances can be refreshed.

(Why still need a setup at all? Well, now it's not for choosing from millions of techical options due to weak implementation but for fancy things, see chapter 'General setup options' as well as Glide and DirectX readme.)


7. Resolution and refresh rate overriding

You can override the application resolution and refresh rate both for Glide and DirectX rendering.
There are three types of resolution overriding, and, the 'Resolution' comboboxes contain two types of elements in the enumerated list:

If you are terribly interested in how the current dynamic resolution is calculated then a little technical part comes here. Otherwise you can skip this section.

D:desktop resolution
F:FullHD resolution (1920x1080)
Q:QHD resolution (2560x1440)
A:application resolution
AS (x, y):stretched from x to y, with aspect ratio
IAS (x, y):stretched from x to y, with aspect ratio, integer scale factor

Unspecified Centered Stretched Stretch with AR
Max D D D AS (A, D)
Max ISF IAS (A, D) IAS (A, D) * remarks IAS (A, D)
Max FHD AS (A, min (D,F)) AS (A, min (D,F)) min (D,F) AS (A, min (D,F))
Max FHD ISF IAS (A, min (D,F)) IAS (A, min (D,F)) * remarks IAS (A, min (D,F))
Max QHD AS (A, min (D,Q)) AS (A, min (D,Q)) min (Q,F) AS (A, min (D,Q))
Max QHD ISF IAS (A, min (D,Q)) IAS (A, min (D,Q)) * remarks IAS (A, min (D,Q))

Remarks:

I'd like to say some words about what happens on multimonitor systems with dynamic resolution forcing:


8. General setup options


Options on the General tab affects all wrapped APIs, that is, currently Glide and DirectX.

9. General tips and known issues


10. Change log

Have luck,
Dege