mirror of
https://github.com/BC46/freelancer-hd-edition
synced 2024-08-30 18:32:47 +00:00
1255 lines
59 KiB
HTML
1255 lines
59 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
|
|
p
|
|
{
|
|
max-width:1000px;
|
|
word-wrap:break-word;
|
|
text-align:justify
|
|
}
|
|
|
|
table, th, td {
|
|
width:1000px;
|
|
border: 1px solid #C0C0C0;
|
|
border-collapse: collapse;
|
|
text-align: center;
|
|
}
|
|
|
|
|
|
li {
|
|
max-width:1000px;
|
|
text-align:justify
|
|
}
|
|
|
|
</style>
|
|
|
|
<head>
|
|
|
|
<meta name="google-site-verification" content="4JMbYsGNl4-uZV9FEQvq56CQDND5NHcIPtMblynaH-Q" />
|
|
|
|
<title>dgVoodoo2 Main Readme</title>
|
|
|
|
</head>
|
|
|
|
<body bgcolor="#D97600">
|
|
<font color = "#FFFF00">
|
|
|
|
<h2 align="left">
|
|
===============================================================================<br>
|
|
<font color = "#FFFFFF">dgVoodoo 2.54</font>: Glide, DirectDraw/Direct3D and D3D8 to Direct3D11 Wrapper<br>
|
|
Released: <font color = "#FFFFFF">April 25, 2017</font><br>
|
|
Author: <font color = "#FFFFFF">Dege</font><br>
|
|
<br>
|
|
Copyright (c) 2013-2017<br>
|
|
===============================================================================<br>
|
|
</h2>
|
|
|
|
<p>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
Table of contents
|
|
</u></font></h2>
|
|
<h3><b>
|
|
1. Redistribution rights<br>
|
|
2. Features<br>
|
|
3. Requirements<br>
|
|
4. Test results<br>
|
|
5. Usage<br>
|
|
6. Configuring<br>
|
|
7. Resolution overriding<br>
|
|
8. General Control Panel (CPL) options<br>
|
|
9. General tips and known issues<br>
|
|
10. Change log<br>
|
|
</b></h3>
|
|
===============================================================================<br>
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
1. Redistribution rights
|
|
</u></font></h2>
|
|
<p>
|
|
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!
|
|
</p>
|
|
<p>
|
|
If you would like to utilize them in publicly available custom solutions or
|
|
packages, like game patches or anything else, then <font color = "#FFFFFF">PLEASE</font> ask me for permission,
|
|
furthermore mention its original source in your package along with the following
|
|
download link:
|
|
</p>
|
|
<a href="http://dege.fw.hu/">http://dege.fw.hu/</a>
|
|
<p>
|
|
Official dgVoodoo forum where you can contact me and the dgVoodoo community is at:
|
|
</p>
|
|
<a href="http://www.vogons.org/viewforum.php?f=59/">http://www.vogons.org/viewforum.php?f=59/</a><br>
|
|
<br>
|
|
Tip: See topic <font color = "#FFFFFF">"WIP versions"</font> for checking out new dgVoodoo versions that are not officially released.
|
|
<br><br>
|
|
<font color = "#FFFFFF">
|
|
<table bgcolor = "#C96600">
|
|
<tr><td>---------------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ----------------------</td></tr>
|
|
<tr><td>
|
|
<p>
|
|
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!
|
|
</p>
|
|
</tr></td>
|
|
<tr><td>
|
|
<p>
|
|
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!!!
|
|
</p>
|
|
</tr></td>
|
|
<tr><td>---------------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ----------------------</td></tr>
|
|
</table>
|
|
</font>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
2. Features
|
|
</u></font></h2>
|
|
<p>
|
|
dgVoodoo 2 is a wrapper for old graphics API's for Windows Vista/7/8/10.
|
|
<br><br>
|
|
This wrapper can use Direct3D 11 with different device types as wrapping output:
|
|
<ul>
|
|
<li>Hardware rendering at GPU feature level 10.1 (recommended)</li>
|
|
<li>Hardware rendering at GPU feature level 10.0 (there are some restrictions)</li>
|
|
<li>Software rendering through Microsoft WARP renderer</li>
|
|
</ul>
|
|
|
|
The API's it currently can wrap are:
|
|
<ul>
|
|
<li>Glide 2.11, Glide 2.45, Glide 3.1 and Glide 3.1 Napalm</li>
|
|
<li>DirectX 1-7 (all versions of DirectDraw and Direct3D up to version 7)</li>
|
|
<li>Direct3D 8.1</li>
|
|
</ul>
|
|
<p>
|
|
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).<br>
|
|
dgVoodoo basically can work in two ways:
|
|
<ul>
|
|
<li>Using its precompiled shaders - it is the less efficient mode (legacy) and doesn't provide DX8-level vertex/pixel pipeline functionality</li>
|
|
<li>Using an external HLSL shader compiler - this is the most efficient and recommended mode and referred as 'dynamic shader compiling'</li>
|
|
</ul>
|
|
</p>
|
|
<p>
|
|
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.<br>
|
|
</p>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
3. Requirements
|
|
</u></font></h2>
|
|
<ul>
|
|
<li>Operating system: Windows Vista/7/8/10</li>
|
|
<li>Hardware: GPU supporting DirectX feature level 10.0.</li>
|
|
</ul>
|
|
Optional and recommended:
|
|
<ul>
|
|
<li>GPU supporting DirectX <font color = "#FFFFFF">feature level 10.1</font></li>
|
|
<li>HLSL shader compiler <font color = "#FFFFFF">(D3DCompiler_43 or D3DCompiler_47)</font><br>(note that D3DCompiler_47 is part of Windows 10)</li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
4. Test results
|
|
</u></font></h2>
|
|
<p>
|
|
We can examine this in two aspects:
|
|
</p>
|
|
<ul>
|
|
<li><font color = "#FFFFFF"><b>Used hardware and performance</b></font><br>
|
|
I've tested and run different versions of dgVoodoo2 on the following GPU's:
|
|
<font color = "#FFFFFF"><ul>
|
|
<li>Intel HD 2000 (feature level 10.0 only)</li>
|
|
<li>GeForce 8600 GT (feature level 10.0 only)</li>
|
|
<li>Intel HD 4000</li>
|
|
<li>Geforce GT 610</li>
|
|
<li>AMD HD 6450</li>
|
|
<li>Intel HD Graphics 530</li>
|
|
<li>GeForce GTS 450</li>
|
|
<li>AMD HD 7850</li>
|
|
<li>GeForce GTX Ti560 (RIP)</li>
|
|
<li>AMD R7 360</li>
|
|
<li>GeForce GTX 1060</li>
|
|
</ul></font>
|
|
If dynamic shader compiling is utilized then dgVoodoo generally performs quite well on all hardware except
|
|
integrated chips (like Intel HD 2000 and 4000).<br>
|
|
Using only precompiled shaders requires a mid-class video card at least, and the low-end ones (intended for office-like usage) like
|
|
Geforce GT 610 and AMD HD 6450 are not recommended.
|
|
</li>
|
|
|
|
<br><li><font color = "#FFFFFF"><b>Accuracy of the emulation, individual games and applications</b></font><br>
|
|
Of course it's not perfect but I think I got very nice results in general. I maintain expanding lists for games and demos, for DirectX emulation:<br>
|
|
<a href="http://dege.fw.hu/Gallery/DXGamesGallery.html">Games</a><br>
|
|
<a href="http://dege.fw.hu/Gallery/DXDemosGallery.html">Demos</a><br>
|
|
</li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
5. Usage
|
|
</u></font></h2>
|
|
<p>
|
|
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).
|
|
</p>
|
|
<p>
|
|
A Glide wrapped application can start up either in windowed or full screen
|
|
mode (it is controlled by the <font color = "#FFFFFF">Control Panel</font>, see later). Also, you can switch between
|
|
them during the gameplay by Alt-Enter. See 'Known issues' for more.
|
|
</p>
|
|
<p>
|
|
The same is true for wrapped DirectX applications, but it is a more
|
|
complicated case, see DirectX readme.
|
|
</p>
|
|
<p>
|
|
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.
|
|
</p>
|
|
<p>
|
|
If you use dgVoodoo on Windows 10 then dynamic shader compiling is automatically
|
|
available because D3DCompiler_47 is part of the operating system.<br>
|
|
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
|
|
</p>
|
|
|
|
<ul>
|
|
<li><font color = "#FFFFFF">Windows\System32 folder for 32 bit operating systems</font></li>
|
|
<li><font color = "#FFFFFF">Windows\SysWOW64 folder for 64 bit operating systems</font></li>
|
|
</ul>
|
|
|
|
<p>
|
|
if it is not already there by the result of the installation of some
|
|
other software.<br>
|
|
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.
|
|
</p>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
6. Configuring
|
|
</u></font></h2>
|
|
<p>
|
|
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.
|
|
</p>
|
|
<p>
|
|
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:
|
|
<ul>
|
|
<li>Folder of the wrapper DLL</li>
|
|
<li>Folder of the application (EXE)</li>
|
|
<li>User application data folder</li>
|
|
</ul>
|
|
If the config file can be found in none of them then the default config is used.
|
|
</p>
|
|
<p>
|
|
For modifying config files, you have <font color = "#FFFFFF">dgVoodoo Control Panel (dgVoodooCpl)</font>.
|
|
In dgVoodooCpl you can choose a folder where you can load (from) and save the current
|
|
configuration. After you chose a folder, it remains in the list permanently.
|
|
If the CPL application finds a valid config file in its own folder (where the app itself
|
|
is located) then it automatically places the folder into the list and selects the folder.
|
|
Otherwise the user's application data folder is selected, by default.
|
|
</p>
|
|
<p>
|
|
If an application tolerates losing focus without closing/minimizing itself,
|
|
you can configure it dynamically: when the CPL 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.
|
|
</p>
|
|
<p>
|
|
You can always use the <font color = "#FFFFFF">'Apply' button</font> to save the current config to the
|
|
selected folder or running application without exiting the CPL application.
|
|
|
|
Important to note:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><p>
|
|
If the wrapped app and the CPL runs on different privilege levels
|
|
(admin/nonadmin) then the app won't appear in the instance list or they
|
|
cannot communicate to each other. Sorry for the inconvenience.</p>
|
|
</li>
|
|
<li><p>
|
|
Switching resolution or MSAA can only be performed perfectly if the
|
|
application re-renders everything on each frame. If it uses or keeps
|
|
previously (once-)rendered things like cockpits or similars then they will
|
|
be missing as will not get re-rendered. (Glide only)</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>A folder inserted formerly into the list can be removed. Also, list of the
|
|
running instances can be refreshed.</p>
|
|
|
|
<p>
|
|
(Why configuration is still needed at all? Well, now it's not for choosing from
|
|
millions of technical options due to weak implementation but for fancy things,
|
|
see chapter 'General Control Panel (CPL) options' as well as Glide and DirectX readme.)
|
|
</p>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
7. Resolution and refresh rate overriding
|
|
</u></font></h2>
|
|
|
|
<p>
|
|
You can override the application resolution and refresh rate both for
|
|
Glide and DirectX rendering.<br>
|
|
There are three types of resolution overriding, and, the 'Resolution'
|
|
comboboxes contain two types of elements in the enumerated list:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<font color = "#FFFFFF">Static resolutions</font>
|
|
<p>
|
|
Those are enumerated by your videocard for the selected display output.
|
|
Select any of them, and the wrapper will force that one (along with the selected refresh rate),
|
|
no matter what resolution the application wants to set.<br>
|
|
Resolution 'Unforced' means always using the current application resolution, so there is no overriding at all.
|
|
</p>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">Dynamic resolutions</font>
|
|
<p>
|
|
First, a little explanation on what the practical problems are with static
|
|
resolutions (especially for DirectX applications).
|
|
</p>
|
|
<ul>
|
|
<li><p>
|
|
The application may use multiple resolutions for different parts like movies,
|
|
menus and ingame. The statically chosen resolution may not have the same
|
|
aspect ratio as those of them. For app-resolutions with different aspect
|
|
ratios like 4:3 vs 16:9 it's a problem because one of them will be displayed
|
|
hugely distorted.</p>
|
|
|
|
<li><p>
|
|
Even if the app uses only one resolution, and you can select or type another
|
|
one with the same aspect ratio, then selecting the proper resolution is still
|
|
not an easy task:<br>
|
|
a) you don't necessarily know what resolution the app uses<br>
|
|
b) you don't necessarily know what the max resolution your display is capable
|
|
of<br>
|
|
c) even if you know both of them, you may have to calculate manually the
|
|
desired resolution.</p>
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
(My own problem was the following: I sat down in front of a new computer with
|
|
a 4K monitor and wanted to try out some stuffs through dgVoodoo. I faced the
|
|
fact that I didn't know the exact monitor resolution, I also didn't know what
|
|
res the stuffs to try were using. I just wanted the maximum available
|
|
resolution to be forced that keeps the aspect ratio.)
|
|
</p>
|
|
<p>
|
|
Dynamic resolution is the synonim of "let the wrapper choose the current
|
|
resolution for you". The maximum, and also the base used for calculating the
|
|
current resolution, is your desktop resolution. The base rule is that the
|
|
wrapper always calculates the maximum available resolution for the given
|
|
scaling mode, but
|
|
</p>
|
|
<ul>
|
|
<li><p>you can restrict the base maximum to <font color = "#FFFFFF">FullHD (1920x1080) or QHD (2560x1440)</font>
|
|
for weaker GPUs (like low-end cards or maybe, integrated chips) with large-res display outputs, and</p></li>
|
|
<li><p>you can restrict the scale factor to integer numbers.<br>
|
|
<font color = "#FFFFFF">(ISF - integer scale factor)</font></p></li>
|
|
</ul>
|
|
|
|
So, dynamic resolutions are the following:
|
|
<ul>
|
|
<li><font color = "#FFFFFF">Max:</font> Maximum resolution available</li>
|
|
<li><font color = "#FFFFFF">Max ISF:</font> Maximum resolution with integer scale factor available</li>
|
|
<li><font color = "#FFFFFF">Max FHD:</font> Maximum resolution available
|
|
(but restricted to 1920x1080)</li>
|
|
<li><font color = "#FFFFFF">Max FHD ISF:</font> Maximum resolution with integer scale factor available
|
|
(but restricted to 1920x1080)</li>
|
|
<li><font color = "#FFFFFF">Max QHD:</font> Maximum resolution available
|
|
(but restricted to 2560x1440)</li>
|
|
<li><font color = "#FFFFFF">Max QHD ISF:</font> Maximum resolution with integer scale factor available
|
|
(but restricted to 2560x1440)</li>
|
|
</ul>
|
|
<p>
|
|
By default, dynamic resolutions don't have refresh rate even if enumerating refresh rates is enabled.
|
|
When working with a dynamic resolution, then the refresh rate is undefined and it is up to the wrapper and the
|
|
video card that what rate will be used (probably the one at which desktop is driven).
|
|
</p>
|
|
|
|
<li>
|
|
<font color = "#FFFFFF">Custom resolutions</font>
|
|
<p>
|
|
A custom resolution is either a static one that is not in the enumerated list, or one that is partially overridden.
|
|
Defining a custom resolution is about typing the string -manually into the combo box- describing the resolution/refresh rate pair.<br>
|
|
Resolution and refresh rate can be overridden independently on each other. Here are some examples (don't type quotation marks):
|
|
<ul>
|
|
<li>"128x128, 60" - means static resolution 128x128 at forced rate of 60Hz</li>
|
|
<li>"128x128, 0" or just "128x128" - means static resolution 128x128 without overridden refresh rate</li>
|
|
<li>"0x0, 75" or "unforced, 75" - means unforced (static) resolution with forced 75Hz</li>
|
|
<li>"max isf, 83" - means Max ISF dynamic resolution with forced 83Hz</li>
|
|
</ul><br>
|
|
If your resolution and refresh rate is in the list then it is better to select it from there than typing it manually.
|
|
It is because e.g. 60Hz is not exactly 60Hz in practice but 60.01Hz or 59.95Hz or so, depending on your display hardware.
|
|
dgVoodoo always handles the refresh rates in their exact rational form but it cannot do that with manually typed ones.<br>
|
|
When displaying a refresh rate in the combo box, dgVoodoo truncates the value. So, for example, 59.95Hz will appear as 59Hz
|
|
in the list, while the display manufacturer probably claims that your display supports 60Hz. Don't let it mislead you. It is all
|
|
about truncating or rounding the values.
|
|
</p>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
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.
|
|
<br><br>
|
|
<table bgcolor = "#C96600">
|
|
<tr><td>D:</td><td>desktop resolution</td></tr>
|
|
<tr><td>F:</td><td>FullHD resolution (1920x1080)</td></tr>
|
|
<tr><td>Q:</td><td>QHD resolution (2560x1440)</td></tr>
|
|
<tr><td>A:</td><td>application resolution</td></tr>
|
|
<tr><td>AS (x, y):</td><td>stretched from x to y, with aspect ratio</td></tr>
|
|
<tr><td>IAS (x, y):</td><td>stretched from x to y, with aspect ratio, integer scale factor</td></tr>
|
|
</table>
|
|
|
|
<br>
|
|
|
|
<table border = 1 bgcolor = "#C96600">
|
|
<tr>
|
|
<th></th>
|
|
<th>Unspecified</th>
|
|
<th>Centered</th>
|
|
<th>Stretched</th>
|
|
<th>Stretch with AR</th>
|
|
</tr>
|
|
<tr>
|
|
<th>Max</th>
|
|
<td>AS (A, D)</td>
|
|
<td>AS (A, D)</td>
|
|
<td>D</td>
|
|
<td>AS (A, D)</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Max ISF</th>
|
|
<td>IAS (A, D)</td>
|
|
<td>IAS (A, D)</td>
|
|
<td>* remarks</td>
|
|
<td>IAS (A, D)</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Max FHD</th>
|
|
<td>AS (A, min (D,F))</td>
|
|
<td>AS (A, min (D,F))</td>
|
|
<td>min (D,F)</td>
|
|
<td>AS (A, min (D,F))</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Max FHD ISF</th>
|
|
<td>IAS (A, min (D,F))</td>
|
|
<td>IAS (A, min (D,F))</td>
|
|
<td>* remarks</td>
|
|
<td>IAS (A, min (D,F))</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Max QHD</th>
|
|
<td>AS (A, min (D,Q))</td>
|
|
<td>AS (A, min (D,Q))</td>
|
|
<td>min (Q,F)</td>
|
|
<td>AS (A, min (D,Q))</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Max QHD ISF </th>
|
|
<td>IAS (A, min (D,Q))</td>
|
|
<td>IAS (A, min (D,Q))</td>
|
|
<td>* remarks</td>
|
|
<td>IAS (A, min (D,Q))</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
Remarks:
|
|
<ul>
|
|
<li><p>
|
|
Resolution is calculated in the same way for scaling mode 'Unspecified', 'Centered' and 'Stretch with AR'.<br>
|
|
</p></li>
|
|
<li><p>
|
|
Stretched scaling mode with ISF tries to stretch to min([D|F|Q]) and the
|
|
scale factor for both direction is the integer part of the minimum of<br>
|
|
<font color = "#FFFFFF">min ([Dx|Fx|Qx])/Ax</font> and <font color = "#FFFFFF">min ([Dy|Fy|Qy])/Ay</font>
|
|
(ratios of X/Y directions).
|
|
</p></li>
|
|
</ul>
|
|
<p>
|
|
I'd like to say some words about what happens on multimonitor systems with
|
|
dynamic resolution forcing:
|
|
</p>
|
|
<ul>
|
|
<li><p>
|
|
Glide: when switching from windowed mode to fullscreen then a new forced
|
|
resolution is calculated by the wrapper, based on the native res of the
|
|
display on which the full screen output will appear.
|
|
</p></li>
|
|
<li><p>
|
|
DX: It's not so flexible at all, unfortunately. Since DX impl doesn't
|
|
support changing resolution during its working, it cannot do the same
|
|
as Glide when switching into fullscreen. Also, since display outputs
|
|
are enumerated to the application, resolution calculation can rely only
|
|
on the native res of the output on which DX is initialized (so changing
|
|
the output of a running DX emulated app from the CPL application is without avail,
|
|
won't affect the next resolution calculation).
|
|
</p></li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
8. General Control Panel (CPL) options
|
|
</u></font></h2>
|
|
<br>
|
|
Options on the General tab affects all wrapped APIs, that is, currently
|
|
Glide and DirectX.
|
|
<ul>
|
|
<li><font color = "#FFFFFF"><b>Output API</b></font><br>
|
|
Three output API's are available:<br>
|
|
<ul>
|
|
<li><p><font color = "#FFFFFF">Direct3D11 feature level 10.1</font></p></li>
|
|
<li><p><font color = "#FFFFFF">Direct3D11 feature level 10.0</font></p></li>
|
|
<li><p><font color = "#FFFFFF">Direct3D11 Microsoft WARP renderer</font><br><br>
|
|
D3D11 with FL10.0 is designed to be used with late
|
|
DX 10.0 hardware and has some limitations:
|
|
<ul>
|
|
<li>No mipmapping in Glide rendering</li>
|
|
<li>Limited operations on Z-buffers</li>
|
|
<ul>
|
|
<li>Buffers <font color="#FFFFFF">with forced MSAA can only be rendering targets;</font></b> they cannot be used as
|
|
<ul>
|
|
<li>depth textures</li>
|
|
<li>source of copy operations (Blit in DDraw)</li>
|
|
<li>locked for CPU-access (Lock in DDraw/ LockRect in D3D8)</li>
|
|
</ul>
|
|
</li>
|
|
<li>Faces of 3D-rendered cube-depth buffers cannot be
|
|
<ul>
|
|
<li>source of copy operations (Blit in DDraw)</li>
|
|
<li>locked for CPU-access (Lock in DDraw/ LockRect in D3D8)</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
<p>
|
|
WARP is a software renderer, I intended it to be
|
|
kind of a reference driver but I experienced some
|
|
rendering errors with it unfortunately.
|
|
</p>
|
|
</p></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li><p>
|
|
<font color = "#FFFFFF"><b>Video card (adapter)</b></font><br>In case you have more than one, then
|
|
<ul>
|
|
<li>
|
|
Glide:
|
|
<font color = "#FFFFFF">which one to use</font> for rendering. Option 'All of them' is equivalent to selecting the first video card in the list.</li>
|
|
<li>DirectX: it is a multi-device capable API so you can
|
|
choose <font color = "#FFFFFF">which adapter(s) are to be enabled</font> for the emulation.</li>
|
|
</ul>
|
|
</p></li>
|
|
|
|
|
|
<li><p>
|
|
<font color = "#FFFFFF"><b>Monitor (output)</b></font><br>
|
|
If you have multiple monitors then you can choose
|
|
which one(s) (connected to the selected adapter):
|
|
<ul>
|
|
<li>
|
|
<font color = "#FFFFFF">Glide: which monitor is used for fullscreen output.</font> When 'Default'
|
|
is selected then switching from windowed to fullscreen
|
|
during playing a game selects the monitor containing
|
|
the largest part of the game window.<br>
|
|
It can be overridden dynamically on a running Glide wrapped application and it also affects
|
|
dynamic resolution calculating (see resolution overriding).
|
|
</li>
|
|
<li>
|
|
<font color = "#FFFFFF">DirectX: which monitor(s) to enable to appear as DX devices to the application.</font>
|
|
'Default' enables all the monitors connected to the selected adapter. When the game or
|
|
application goes into fullscreen then it always happens on the monitor (device) that the
|
|
game/application selected for use. In case of a multidevice environment games and applications
|
|
often (and silently) selects the first available device which generally corresponds to the primary monitor,
|
|
but advanced apps allows the user to configure it through the app itself.
|
|
<br>
|
|
It can be overridden dynamically on a running DirectX-wrapped application however it only
|
|
affects the output, it is all about pure visuality. It doesn't affects dynamic resolution
|
|
calculating (see resolution overriding) and also, the application shall continue to see the
|
|
corresponding device in it original state (keep in mind that it can conflict with the app).
|
|
</li>
|
|
</ul>
|
|
</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Full Screen / Windowed</b></font><br>
|
|
See section "Usage".</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Unspecified/Centered/Scaled/Scaled with Aspect Ratio kept, for full screen</b></font><br>
|
|
|
|
If the current resolution the wrapped app using does not
|
|
match any natural resolution your adapter supports
|
|
then the display can be strethed out to fit all the
|
|
screen or its size can be left unchanged but centered.
|
|
|
|
<font color = "#FFFFFF">NOTE that if your video card supports overriding the scaling
|
|
method of applications, and you'd like to apply a scaling
|
|
with aspect ratio then it is recommended to set dgVoodoo's
|
|
scaling method to 'Unspecified' + set the scaling mode <b>on your
|
|
video card control panel</b> because dgVoodoo's internal scaling
|
|
is unfortunately not a sterling one.</font> It implies that you may
|
|
experience various problems like wrong mouse cursor or
|
|
glitches in rendering in certain applications. Scaling can
|
|
only be done well (transparently) on the GPU/display side.
|
|
<br>
|
|
C64-like output: well, if you are not a former C64 owner and fan, don't even try it,
|
|
I'm sure you won't like it at all. As dgVoodoo is my main hobby programming playground
|
|
these times I tried some algorhytms as part of it. It's not really a feature,
|
|
but the result of some former experimenting and can be funny for some scene demos.
|
|
|
|
</p></li>
|
|
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Progressive scanline order</b></font><br>
|
|
Default scanline order is interlaced or progressive. It is
|
|
up to the output display device which one to choose altough
|
|
it chooses progressive when it is possible, I think, so
|
|
that when the device is capable of displaying a given
|
|
resolution with a given refresh rate with progressive order.
|
|
Otherwise it might choose interlaced order with halved
|
|
physical refresh rate.
|
|
If this option is enabled, you can only see enumerated
|
|
resolutions that are displayable with progressive order.
|
|
However, if a custom resolution is defined then it may
|
|
causes the output device to use lower physical resolution
|
|
than the wrapper set.
|
|
</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Enumerate refresh rates</b></font><br>
|
|
Enables the CPL application to enumerate refresh rates for
|
|
each resolution and enables the wrapper to override the
|
|
default refresh rate of the application.
|
|
<font color = "#FFFFFF">However using other than the app default can cause heavy
|
|
animation lagging or glitches!</font>
|
|
</p></li>
|
|
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Color adjustments</b></font><br>
|
|
Brightness, color intensity (saturation) and contrast can be finetuned here.
|
|
The defaults are good in general so treat this as a
|
|
cool extra. (I'm using it in some cases for making colors
|
|
more vital to get a bit cartoon-like effect.)
|
|
</p></li>
|
|
<li><p><font color="#FFFFFF"><b>Inherit Color Profile in full screen mode</b></font><br>
|
|
When this option is enabled then dgVoodoo won't change the physical
|
|
gamma ramp of the screen but instead it solves the color adjustments
|
|
just like in windowed mode and so your pre-configured color profile(s)
|
|
for the given monitor(s) remain(s) preserved. Color adjustments are
|
|
relative to the predefined color profile in that case.
|
|
|
|
</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Keep window aspect ratio</b></font><br>
|
|
In windowed mode, when sizing the window, you can keep
|
|
the aspect ratio of the current resolution.
|
|
</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Capture mouse</b></font><br>
|
|
It's useful mainly (but not only) for multimonitor systems. If this is enabled then the mouse cursor
|
|
is forced into the application window to prevent accidental mis-clicks outside of it.
|
|
</p></li>
|
|
|
|
<li><p><font color = "#FFFFFF"><b>Center app window</b></font><br>
|
|
When a game controlling the mouse input is being run in windowed mode then
|
|
it's a pain to move it's window into the screen, so I thought it's a valuable option (was a request too),
|
|
but it can conflict with the mouse input or the app itself.
|
|
|
|
</p></li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
9. General tips and known issues
|
|
</u></font></h2>
|
|
<ul>
|
|
<li>Forcing things (like resolution, antialiasing, texture filtering, etc) is
|
|
not a healthy thing. If an application or game uses low resolution or point
|
|
sampled textures or anything dissonant to the eye then it has reasons for
|
|
that. It is not because the programmers were so lame but of avoiding artifacts
|
|
that would otherwise get brought in (typical example is a bilinear filtered
|
|
texture with colorkey based transparency). If you force anything then
|
|
potentially get one of those artifacts. If you can live with it then it is ok,
|
|
use the wrapper in forced mode. If not then disable all forcings and use the
|
|
particular game or application in the mode it was designed for, because no
|
|
general method exists to fix such type of artifacts.</li>
|
|
|
|
<li>Controlling antialiasing cannot be done on per-primitive basis in Direct3D 11
|
|
when feature set larger than 10.0 is used. That is why antialiased drawing
|
|
is not emulated in Glide automatically in this version in any way (per-primitive or
|
|
per-edge). It can only be forced globally in the CPL application.</li>
|
|
|
|
<li>Fullscreen gamma ramp may not be supported by your card. nVidia and ATI seem
|
|
to handle it as expected but (e.g.) Intel does not.</li>
|
|
|
|
<li>When an application is being run in compatibility mode (Win98/XP etc) then
|
|
<font color = "#FFFFFF">the user's application data folder is different than the OS default.</font>
|
|
Therefore dgVoodoo cannot read the global config file and the default
|
|
config gets applied if no local config file is present. The preferred way
|
|
is creating a local config for such cases if other than the default needed.
|
|
(Perhaps using the user's appdata folder is not a too good idea after all,
|
|
I might change it later.)</li>
|
|
|
|
<li>If you have a multimonitor system then always try a game to run on the primary
|
|
one for the first time. Some games lock the mouse cursor to the screen area
|
|
where game window is assumed to be (the left-top corner of the desktop).
|
|
If such a game is being forced onto another monitor then clicking in the game
|
|
causes application focus loss because its window is not under the mouse cursor.</li>
|
|
|
|
<li>I don't know why but overriding refresh rates by arbitrary values (in the resolution selector combo box) does not
|
|
seem to work for DirectX emulation. It is still subject to investigation because the code
|
|
handling this is common for both Glide and DirectX. :(
|
|
</li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h2><font color = "#FFFFFF"><u>
|
|
10. Change log
|
|
</u></font></h2>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color = "#FFFFFF">2.54</font>
|
|
<ul><li>Windows input issues caused by the wrapper are fixed (Outlaws, GTA1 DDraw mode, etc.)</li>
|
|
<li>Rendering transition between Glide/DDraw is fixed (Outlaws)</li>
|
|
<li>Concept of setup application is replaced with concept of Control Panel (CPL)</li>
|
|
<li>Control Panel App:</li>
|
|
<ul>
|
|
<li>Contrast as a new color adjustment option is added</li>
|
|
<li>Preserving predefined monitor color profile(s) for fullscreen mode as an option is added</li>
|
|
<li>A general option for centering the application/game window is added</li>
|
|
<li>DirectX texture filtering options are changed, possibility of forcing anisotropic filtering is introduced</li>
|
|
<li>New scaling mode with C64-like output (it's not a feature but more like an experimenting code)</li>
|
|
<li>Visual cosmetics</li>
|
|
</ul>
|
|
<li>DirectX:</li>
|
|
<ul>
|
|
<li>Some of the DDraw code is guarded to avoid the unexpected worst-way DLL unloading<br>
|
|
Now LithTech engine games (Blood2, NOLF, Kiss Psycho Circus, ...) should tolerate Alt-Tab on Win10</li>
|
|
<li>Some other extra guarding to prevent crashes, Virtua Cop2 now works in D3D mode</li>
|
|
<li>Blit bug and clipper incompatibility fixed in DDraw (D3DRM, Tokipazu, tech demo Final Reality)</li>
|
|
<li>Minor issue in DDraw and bad L6V5U5 format descriptor is fixed (Kyro tech demos)</li>
|
|
<li>Adding support for plain surface format A8L8 (DDraw) (Matrox G400 Tech Demo)</li>
|
|
<li>D3D3 fog fixed (Shadows of The Empire patched to 1.1)</li>
|
|
<li>Execute buffer bug fixed in D3D (D3DRM)</li>
|
|
<li>Some D3D5 incompatibilities are fixed (crash and texture handling with Space Bunnies Must Die)</li>
|
|
<li>Fixing D3D6 bugs and calculations of old software-only lighting and other incompatible things (DX6 SDK sample applications (Immediate/Retained) + Fog City/Tirtanium demos)</li>
|
|
<li>Unexpected way of texture compression is implemented (D3D7, Soulbringer)</li>
|
|
<li>Adding support for Q8W8V8U8 texture format (D3D8) (3DMark 2001 SE, Nature, Pixel shader and Advanced Pixel shader test)</li>
|
|
<li>D3D8 device handling bug is fixed (multimonitor environment)</li>
|
|
<li>D3D8 compatibility fixings, now handling managed textures is compatible with Phantasy Star Online Blue Burst
|
|
(corrupt mipmapping)</li>
|
|
<li>Issue with D3D8 device capabilities and SYSTEMMEM vertex buffers are fixed (LKCC demos)</li>
|
|
<li>D3D8 DrawIndexedPrimitive bug fixed (Syberia 2)</li>
|
|
<li>Adding support for depth buffer format D24X4S4 (D3D8) (Matrox Parhelia Reef Tech Demo)</li>
|
|
<li>Adding support for volume textures (D3D8), though with limited number of formats
|
|
(Matrox Parhelia Coral Reef Tech Demo + DX8 SDK VolumeTexture sample + general)</li>
|
|
|
|
<li>Lower resource usage is partly included in this version.
|
|
For the time being, only the usage of GPU accessible system memory.</li>
|
|
|
|
<li>General bugfixing, like unexpected forced windowed mode (Soulbringer movies), vertex shader (missing fog in Colin McRae Rally), non-perspective polygon drawing bug,
|
|
fixed (Zanzarah The Hidden Portal), and a lot other</li>
|
|
<li>Handling depth buffers had some bugs at FL 10.0, fixed (D3D11)</li>
|
|
<li>Potential bad driving of D3D11 at FL10.1 when no resolution and MSAA is forced (D3D11) (Gorky17)</li>
|
|
<li>Some (regression and other) bugs in the D3D11 renderer are fixed</li>
|
|
<li>GeForce 4 profile is slightly modified to match a real GF4</li>
|
|
<ul>
|
|
<li>Now light beams in Splinter Cell 1 should be rendered correctly through the GF4 card type (unblurred lights with occlusion)</li>
|
|
</ul>
|
|
<li>2 new videocard types are added:</li>
|
|
<ul>
|
|
<li>GeForce FX 5700 Ultra (keeps the soft shadows for Splinter Cell 1 (because I like it :D) and will hopefully be feasible to provide place for new features later)</li>
|
|
<li>Matrox Parhelia-512 (for Matrox Coral Reef Demo 1.1 and other Matrox tech demos)</li>
|
|
</ul>
|
|
</ul>
|
|
<li>Glide:</li>
|
|
<ul>
|
|
<li>Glide fix (far background in front of the 3D world: Mig29, Uprising)</li>
|
|
<li>Texture memory report is modified to match that of a real 3Dfx driver (Slave Zero)</li>
|
|
</ul>
|
|
<li>Tons of code changing for new features that are not ready yet and so not included in this version</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
|
|
<li>
|
|
<font color = "#FFFFFF">2.53</font>
|
|
<ul><li>Support for 'dynamic resolutions' (see section 'Resolution overriding')</li>
|
|
<li>Added support for 'd3dcompiler_47.dll', so Win10 users don't have to
|
|
download and mess with d3dcompiler dll, 47 is part of the Win10 OS.</li>
|
|
<li>Linear filtering was applied for upscaling the output-image even if the
|
|
scale ratio was 1.0, fixed</li>
|
|
<li>Some modifications on the CRT-like shader were done for correct CRT-like
|
|
appearance on high-res displays like a 4K monitor</li>
|
|
<li>Glide mode 'Compare to bias' is fixed (Esoteria demo)</li>
|
|
<li>Some other Glide rendering issues are fixed (Hype - The Time Quest)</li>
|
|
<li>DDraw system memory surface pitch is fixed to match that of DIBs
|
|
(Snow Wave Avalanche)</li>
|
|
<li>A DX8 bug is fixed, so Mafia now works, altough I experience z-buffer
|
|
glitches here and there (to be fixed)</li>
|
|
<li>Lot of general D3D/D3D8 bugs are fixed, too</li>
|
|
<li>GeForce4-style shadow buffering is reverse engineered and implemented in
|
|
the 'Geforce Ti4800' preset</li>
|
|
<li>Floating point arithmetic differences (incompatibilities) between vs1.x
|
|
and vs4.x are resolved, Splinter Cell 1 now works in shadow buffer mode</li>
|
|
<li>New dynamic vertex buffering algorhythm for removing rendering performance
|
|
bottleneck, better usage of GPU</li>
|
|
<li>The config application is now per-monitor DPI-aware, to have sharp
|
|
appearance</li>
|
|
<li>MSAA option name 'Auto' is changed to 'App driven'</li>
|
|
<li>New option for DirectX emulation is added (No texture filtering)</li>
|
|
<li>Changes in the default config:</li>
|
|
<ul>
|
|
<li>Capture mouse is on</li>
|
|
<li>MSAA is app driven</li>
|
|
</ul>
|
|
<li>Doc format is changed from txt to html and content is revised</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.52</font>
|
|
<ul><li>Support for new output APIs are added</li>
|
|
<ul>
|
|
<li>Direct3D11 at feature level 10.0 (there are some restrictions)</li>
|
|
<li>Direct3D11 Microsoft WARP renderer</li>
|
|
</ul>
|
|
<li>Support for rendering DirectShow movie playback</li>
|
|
<li>Resolution overriding for DirectX emulation is now available</li>
|
|
<li>New scaling mode (forced 4:3 aspect ratio) with/without CRT-like
|
|
appearance is added</li>
|
|
<li>MSAA support for DX8</li>
|
|
<li>Lot of DX8 bugfixings</li>
|
|
<li>A few DDraw/D3D bugfixings</li>
|
|
<li>Making 'VertexLayout' functionality be compatible with a real 3Dfx
|
|
driver (Glide3)</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.51</font>
|
|
<ul><li>Point sprite support for DX8 is added</li>
|
|
<li>New texture formats (A8, L8, A8L8) for DX7/DX8 are added</li>
|
|
<li>Tons of DX8 bugfixings, more compatibility</li>
|
|
<li>More DirectDraw compatibility in object handling + bugfixing</li>
|
|
<li>Regression bugs in Glide fixed</li>
|
|
<li>Capabilities of GeForce Ti 4800 and ATI Radeon 8500 are changed to be much
|
|
closer to the real ones (see the technical details in the DX readme)</li>
|
|
<li>AMD driver bug causing driver crash with Glide rendering is workarounded
|
|
now dgVoodoo should work on all AMD cards properly</li>
|
|
<li>'Fast video memory access' is now compatible with Unreal engines</li>
|
|
<li>Emulated method of stretching the display output with keeping aspect ratio
|
|
is added</li>
|
|
</ul>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.5</font>
|
|
<ul><li>First version of D3D8 implementation is added</li>
|
|
<li>Lot of bugs fixed during general DirectX code refactoring, I don't want
|
|
to detail them all here</li>
|
|
<li>Dynamic shader compiling for all API components for better performance
|
|
(see Usage and DirectX readme for details, you'll need D3DCompiler_43.dll
|
|
for this feature)</li>
|
|
</ul>
|
|
</li>
|
|
</br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.45</font>
|
|
<ul><li>Heavily refactored DirectX emulation code for certain planned features</li>
|
|
<li>Full cooperating between Glide and DirectX</li>
|
|
<br>
|
|
<li>DirectDraw emulation:
|
|
<ul>
|
|
<li>True multidevice support, more robust DDraw emulation</li>
|
|
<li>OLE interface support for DirectDraw</li>
|
|
<li>DXTC (S3TC) block compression encoder is added, full support for
|
|
possible alpha-format conversions</li>
|
|
<li>Two new video card types are added with slightly different properties
|
|
(GeForce4 Ti 4800, ATI Radeon 8500)</li>
|
|
<li>DirectDraw emulation-only mode could fail, fixed</li>
|
|
<li>Various DirectDraw bugs/incompatibilities are fixed</li>
|
|
<li>Blitting bugs fixed + full support for blitting from primary surface</li>
|
|
</ul>
|
|
<br>
|
|
<li>Direct3D emulation:</li>
|
|
<ul>
|
|
<li>New colorkeying method added and existing colorkeying related bugs
|
|
are fixed</li>
|
|
<li>Bugs in rendering from execute buffers (points/lines), fixed</li>
|
|
<li>Bug in handling state blocks, fixed</li>
|
|
</ul>
|
|
<br>
|
|
<li>Glide rendering</li>
|
|
<ul>
|
|
<li>Resolution extension support (idea and technical concept by VEG and Zeus)</li>
|
|
</ul>
|
|
</ul>
|
|
</li>
|
|
</br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.44</font>
|
|
<ul>
|
|
<li>DirectX emulation:</li>
|
|
<ul>
|
|
<li>Some surface/D3D device related bugs are fixed</li>
|
|
<li>Mirrored blitting was broken, fixed</li>
|
|
<li>24bit software surface support is added</li>
|
|
<li>support for DXT1-5 compressed textures is added but an S3TC encoder is
|
|
still missing for the cases when a compressed texture is the blitting
|
|
target</li>
|
|
<li>Transforming normal vectors was incompatible with MS D3D, fixed
|
|
This fix includes enabling/disabling of normalizing them, default was
|
|
wrong for older than DX7 interfaces</li>
|
|
<li>Colorkey blend capability is added</li>
|
|
<li>support is added for old mode-X display modes</li>
|
|
<li>Various other small bugs fixed that I can't remember of</li>
|
|
</ul>
|
|
</ul>
|
|
</li>
|
|
</br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.43</font>
|
|
<ul>
|
|
<li>DirectX emulation:</li>
|
|
<ul>
|
|
<li>3D support for 8 bit surfaces is added (Colin McRae Rally)</li>
|
|
<li>Improved surface blitting, more optimal resource consuming for 3D
|
|
surfaces
|
|
<li>First version of fast surface video memory CPU-access is added
|
|
<li>Introducing 'lost' state into the default DX behavior, with additional
|
|
automatic self-restore mechanism for buggy DX applications
|
|
<li>3D TL vertex rendering incompatibilites, fixed
|
|
<li>Various small 3D/caps related bugs, fixed
|
|
<li>Several other bugfixes that I don't want to word here
|
|
</ul>
|
|
<li>Other:</li>
|
|
<ul>
|
|
<li>Some problems related to the window procedures and message handling
|
|
are fixed</li>
|
|
<li>Names of the wrapped running DX applications were displayed incorrectly,
|
|
fixed</li>
|
|
</ul>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.42</font>
|
|
<ul>
|
|
<li>Direct3D3 renderstate handling bugfixes (some of them were disabled)</li>
|
|
<li>Various DirectDraw bugfixes like object/structure version handling,</li>
|
|
surface blitting, basic ROP codes are added, and others</li>
|
|
<li>Compatibility fixings in DirectDraw surface creation functionality</li>
|
|
<li>Compatibility fixings in DirectDraw surface locking functionality</li>
|
|
<li>Compatibility fixings in Direct3D device creating</li>
|
|
<li>Fixing/refactoring light handling in general; now software vertex
|
|
processing can handle any number of them, and also, they can be added at
|
|
any index in Direct3D7</li>
|
|
<li>32 bit z-buffer support added</li>
|
|
<li>Minor Direct3D rendering bugs</li>
|
|
<li>Bad return code in an empty (but necessary) function on IDirect3DTexture,
|
|
fixed</li>
|
|
<li>Missing multithreading guarding in some Direct3D3 methods, fixed</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
</li>
|
|
<font color = "#FFFFFF">2.41</font>
|
|
<ul>
|
|
<li>Direct3D 3 support is added;
|
|
that is all Direct3D interface is supported now</li>
|
|
<li>Bug in the resolution enumerator in DirectDraw, fixed
|
|
(classic and all other resolutions are now enumerated with all bit depths.)</li>
|
|
<li>Resolution combo box was buggy in the setup; couldn't enumerate anything
|
|
when too much resolutions were available, fixed</li>
|
|
<li>Logic of selecting the refresh rate when unspecified rate is requested
|
|
by the application is changed</li>
|
|
<li>Overridable refresh rates</li>
|
|
<li>Bugfixings and improvement for blitting to the primary surface in
|
|
DirectDraw</li>
|
|
<li>Bugfixings for other general surface locking/blitting functionality</li>
|
|
<li>Minor DrawPrimitive bug fixed (missing triangles in Diablo II with
|
|
Direct3D renderer)</li>
|
|
<li>Bug with monochrome lighting is fixed
|
|
(discovered with Jedi Knight - Mysteries of the Sith)</li>
|
|
<li>Bug in surface blitting, fixed (The Settlers IV)</li>
|
|
<li>Bug/incompatibility fixings in surface handling in:
|
|
GetAttachedSurface, EnumerateSurfaces, SetSurfaceDesc and loading
|
|
textures from system memory surfaces to texture surfaces in video memory</li>
|
|
<li>DX wrapper is now more noshutdown-proof when unexpectedly pulled out from
|
|
the process memory area; LithTech engine based games now should work
|
|
(tested with Blood2 and Shogo Mobile Armor Division)</li>
|
|
<li>Various other small bugs fixed that I came across</li>
|
|
<li>Introducing 'unspecified' scaling mode. If you want to apply
|
|
'scaling but keeping aspect ratio' then select it on your graphics driver
|
|
control panel and select 'unspecified' mode in dgVoodoo Setup.
|
|
If it does not work then your only chance is forcing it through the
|
|
graphics control panel (it all seems to be a Windows issue).</li>
|
|
<li>Disabling 'Bilinear blit stretch' in the default configuration.
|
|
I've seen a few games where it caused more 'harm' than coolness that is
|
|
why I decided to disable it by default.</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.4</font>
|
|
<ul>
|
|
<li>DirectX rendering:</li>
|
|
<ul>
|
|
<li>New, improved version of DirectDraw. It fully supports creating and
|
|
blitting to/from textures, Z-buffers and 3D-renderable surfaces with
|
|
several pixel formats. Also, general API-behavioring is more accurate
|
|
to the original one because of lot of bugfixings and heavy reverse
|
|
engineering.</li>
|
|
<li>Gammacontrol interfaces is added to DirectDraw</li>
|
|
<li>First version of Direct3D implementation is added and (almost) fully
|
|
supports DirectX5, DirectX6 and DirectX7. For more and technical details,
|
|
see the DirectX readme. Direct3D interfaces are also as carefully reverse
|
|
engineered as DirectDraw ones.</li>
|
|
</ul>
|
|
|
|
<li>Glide rendering:</li>
|
|
<ul>
|
|
<li>Bug in handling utility textures, fixed (missing textures in South Park)</li>
|
|
<li>Bug with PALETTE6666 extension fixed
|
|
(unreadable menu text in Need For Speed - Porsche 2000 with a Voodoo2
|
|
or higher)</li>
|
|
<li>Bug with tripebuffering fixed (missing 3D elements in The Tainted)</li>
|
|
<li>Adapting Glide3 to 3Dfx mini GL driver (3Dfxvgl.dll),
|
|
(American McGee's Alice):</li>
|
|
<li>Lowering gamma bitnum to 8 (3Dfx didn't follow his own rules...)</li>
|
|
<li>Some init/exit code could get stuck because they can get called from
|
|
DLLMain, fixed</li>
|
|
</ul>
|
|
<li>Setup</li>
|
|
<ul>
|
|
</li>'Apply' button in the setup is added
|
|
(I got bored to OK'ing and reopening the setup each time I want to
|
|
modify the config of more folders or running instances)</li>
|
|
</ul>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.32</font>
|
|
<ul>
|
|
<li>Possibility of overriding the application resfresh rate is added</li>
|
|
<li>Small Glide3 fix (bug with Turok 2)</li>
|
|
<li>Minor Glide3 shader modification (SurfDemo)</li>
|
|
<li>Glide lib is made thread-safe at the needed (minimal) level
|
|
(means avoiding crashes at certain circumstances where the original
|
|
3Dfx driver survived beause of its architecture; a Turok 2 issue again,
|
|
using background threads)</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.31 - It is a slight patch version for 2.3:</font>
|
|
<ul>
|
|
<li>Fixing Glide 3DF reader for various line ending types (Crazy Marbles)</li>
|
|
<li>A bug found in one of Glide state setting functions, fixed (Crazy Marbles)</li>
|
|
<li>Hidden/shown cursor glitch is (seems to be) fixed in windowed mode</li>
|
|
<li>Possibility of forcing progressive scanline order on output display is
|
|
now available in the setup</li>
|
|
<li>Fixing some DirectDraw bugs thanks to other pending developments
|
|
(what I don't want to release yet)</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.3 - This won't be easy because I suspended developing for a few months, but:</font>
|
|
<ul>
|
|
<li>First I refactored the code in order to any new driver component or
|
|
renderer could be added easily</li>
|
|
<li>Fixed some issues with multiple video cards/monitors. Now it works OK
|
|
in a multi-videocard system (not so frequent usecase but I like if
|
|
something is done well)</li>
|
|
<li>Added first version of DirectDraw component to the driver</li>
|
|
<li>Minor Glide shader modifications</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.2</font>
|
|
<ul>
|
|
<li>Napalm build added</li>
|
|
<li>Glide3 fixings: erroneous clip coord space handling</li>
|
|
<li>Small bug related to lfb write with active pipeline, fixed</li>
|
|
<li>Setup got revamped a bit</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.15</font>
|
|
<ul>
|
|
<li>Full support for texture buffers via Glide3 extension 'TEXTUREBUFFER'
|
|
All 16 bit texture formats are supported as rendering format except for
|
|
paletted ones</li>
|
|
<li>Bad color order for delta0 color, fixed
|
|
(seems I'm not in luck with RGBA order in general)</li>
|
|
<li>Some bugs are fixed I found through my own tests: unwritten alpha values
|
|
to the aux buffer, bogus Glide3 viewport handling</li>
|
|
<li>More optimization in LFB lock handling to avoid slowdowns on locking
|
|
patterns/usage like in King's Quest: Mask of Eternity
|
|
(Thanks for the feedback & help, Andrew!!)</li>
|
|
<li>A lot of code changed thanks to other developments, so I hope I have
|
|
not broken anything</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.14</font>
|
|
<ul>
|
|
<li>Unified Memory Architecture (UMA) along with TEXUMA Glide3 extension
|
|
is supported</li>
|
|
<li>Some Voodoo hardware properties are changed according to UMA/non-UMA
|
|
architecture<br>
|
|
(Now Extreme Assault works with Gulikoza's latest patch, but see Tips
|
|
for more)</li>
|
|
<li>Optimizations for lfb read/write region (including 3Dfx watermark)</li>
|
|
<li>A missing thing from PCI emulation is implemented for perfect lfb
|
|
access with active pixel pipeline</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.13</font>
|
|
<ul>
|
|
<li>Improved PCI emulation for LFB access: heavy lfb-lockers like Carma1
|
|
and Pyl SHOULD run much smoother now (see Tips for more)</li>
|
|
<li>Glide3 fixings: bad color order with packed RGBA, uninitialized
|
|
texchroma state</li>
|
|
<li>General glide fixings: bug in glide setstate and clip rectangle</li>
|
|
<li>Missing feature "fog with iterated z" is implemented along with minor
|
|
shader modifications</li>
|
|
<li>Support for splash screen and shameless plug: dgVoodoo needs the 3Dfx
|
|
splash dlls to get it working (3DfxSpl2.dll, 3DfxSpl3.dll, all with
|
|
version 1.0.0.4), however I did not include them in the core dgVoodoo
|
|
pack</li>
|
|
<li>Minor modification for DosBox</li>
|
|
<li>TMUnum selector combobox is fixed, I fcked it down last time</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.12</font>
|
|
<ul>
|
|
<li>More shader optimizations: most critical ones are reduced to 90% in
|
|
size again (So, by now, their size are 65% of the original. I hope I
|
|
have not messed up anything with them.)</li>
|
|
<li>Optional 16 bit depth buffer (see Tips for why is that)</li>
|
|
<li>Some fixings in Glide3 thanks to some unexpected API-driving
|
|
(scene demo Virhe)</li>
|
|
<li>Some bugs related to maintaining/switching/handling windowed/fullscreen
|
|
state are fixed</li>
|
|
<li>Voodoo2 with 1 TMU is no longer selectable in the setup; A Voodoo2
|
|
always have 2 TMUs and it is the default now because shaders are
|
|
optimal enough now to handle 2 TMUs</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.11</font>
|
|
<ul>
|
|
<li>Refactoring GPU querying to get it to work with ATI drivers
|
|
(ATI does not seem to handle them correctly, my code was always fooled
|
|
into infinite loop at a certain point)</li>
|
|
<li>Further shader optimizations: most critical ones are reduced to 90% in
|
|
size</li>
|
|
<li>Minor cursor-issue related to losing window focus, fixed</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.1</font>
|
|
<ul>
|
|
<li>Potential stalling rendering (even on fast GPUs) when switching screen
|
|
modes, fixed</li>
|
|
<li>Shader optimizations: most critical ones are reduced to ~80% in size</li>
|
|
<li>Ability to configure running Glide wrapped applications dynamically
|
|
(see section 'Configuring')</li>
|
|
<li>Different exposed capabilities according to the selected card type</li>
|
|
<li>More Dosbox compatibility</li>
|
|
<li>Bug in gammaramp handling, fixed</li>
|
|
<li>Bug in fogtable generating code, fixed</li>
|
|
<li>Bug in PCI access emulation, fixed</li>
|
|
<li>Forced vSync is enabled by default to avoid overkilling the GPU with
|
|
wild-rendering applications</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.01</font>
|
|
<ul>
|
|
<li>Undrawn polygons when updating TMU memory, fixed</li>
|
|
<li>Potentially bad drawing of strip-primitives in Glide3, fixed</li>
|
|
<li>Malfunctioning LFB lock with 32bit formats when PCI emulation is
|
|
enabled, fixed</li>
|
|
<li>Fullscreen/Windowed state was not always remembered between
|
|
Glide-initializings, fixed</li>
|
|
</ul>
|
|
</li>
|
|
<br>
|
|
<li>
|
|
<font color = "#FFFFFF">2.0 - The original version</font>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
Have luck,<br>
|
|
|
|
Dege
|
|
|
|
|
|
<hr></hr>
|
|
|
|
<font>
|
|
</body>
|
|
|
|
</html> |