diff --git a/EXE/dgVoodooReadMe.html b/EXE/dgVoodooReadMe.html new file mode 100644 index 0000000..a5704a5 --- /dev/null +++ b/EXE/dgVoodooReadMe.html @@ -0,0 +1,1255 @@ + + + + + + + + + + dgVoodoo2 Main Readme + + + + + + +

+===============================================================================
+dgVoodoo 2.54: Glide, DirectDraw/Direct3D and D3D8 to Direct3D11 Wrapper
+Released: April 25, 2017
+Author: Dege
+
+Copyright (c) 2013-2017
+===============================================================================
+

+ +

+

+Table of contents +

+

+1. Redistribution rights
+2. Features
+3. Requirements
+4. Test results
+5. Usage
+6. Configuring
+7. Resolution overriding
+8. General Control Panel (CPL) 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 and the dgVoodoo community is at: +

+http://www.vogons.org/viewforum.php?f=59/
+
+Tip: See topic "WIP versions" for checking out new dgVoodoo versions that are not officially released. +

+ + + + + + +
---------------------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ----------------------
+

+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 the Control Panel, 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. +

+

+For modifying config files, you have dgVoodoo Control Panel (dgVoodooCpl). +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. +

+

+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. +

+

+You can always use the 'Apply' button to save the current config to the +selected folder or running application without exiting the CPL application. + +Important to note: +

+ + + +

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

+ +

+(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.) +

+ +
+

+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
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UnspecifiedCenteredStretchedStretch with AR
MaxAS (A, D)AS (A, D)DAS (A, D)
Max ISFIAS (A, D)IAS (A, D)* remarksIAS (A, D)
Max FHDAS (A, min (D,F))AS (A, min (D,F))min (D,F)AS (A, min (D,F))
Max FHD ISFIAS (A, min (D,F))IAS (A, min (D,F))* remarksIAS (A, min (D,F))
Max QHDAS (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))* remarksIAS (A, min (D,Q))
+
+Remarks: + +

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

+ + +
+

+8. General Control Panel (CPL) 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 + + +
+ + + + + \ No newline at end of file diff --git a/EXE/dgVoodooReadmeDirectX.html b/EXE/dgVoodooReadmeDirectX.html new file mode 100644 index 0000000..6ba5daa --- /dev/null +++ b/EXE/dgVoodooReadmeDirectX.html @@ -0,0 +1,656 @@ + + + + + + + + + + dgVoodoo2 DirectX Readme + + + + + + +

+===============================================================================
+dgVoodoo 2.54: DirectX emulation related stuffs
+
+===============================================================================
+

+ +

+ +

+Table of contents +

+

+1. Important notes
+2. General overview
+3. Some technical info
+4. Application resolutions and refresh rates
+5. About fullscreen and windowed mode
+6. DirectX Control Panel (CPL) options
+7. Tips and known issues
+8. Why doesn't dgVoodoo DX emulation start up? +

+

+===============================================================================
+ +
+

+1. Important notes +

+ +

+First of all: NEVER COPY DDRAW.DLL AND D3D8.DLL INTO SYSTEM FOLDERS!! +ALWAYS USE A LOCAL INSTALLATION FOR A GAME!
+DirectDraw and D3D8 are still existing and widely used system components in Windows.

+ +For clarifying, let's see what dlls MS and dgVoodoo use for DirectDraw and +Direct3D: +

+
    +
  • + + MS:
    +
    + + + + + +
    ddraw.dll- Contains all DirectDraw implementations up to version 7
    d3dim.dll- Contains all Direct3D implementations up to version 6
    d3dim700.dll- Contains Direct3D 7 implementation
    d3d8.dll- Contains Direct3D 8.1 implementation
    +
  • +
    +
  • + + dgVoodoo:
    +
    + + + + +
    ddraw.dll- Contains all DirectDraw implementations up to version 7
    d3dimm.dll- Contains all Direct3D implementations up to version 7
    d3d8.dll- Contains Direct3D 8.1 implementation
    +
  • +
+ +

+So, dgVoodoo packs all of its pre-D3D8 implementation into one module, d3dimm.dll, +which differs in name from the MS one (note the extra 'm' in the name).
+Thus, copying it to the system folder by accident won't cause any harm. In spite +of that, it is not recommended. +

+ +
+

+2. General overview +

+

+If you want to wrap an old DirectX stuff then just copy dgVoodoo's dlls to the +application folder and launch that. DirectX rendering is configurable similarly +to Glide. (See DirectX related CPL options) +DirectDraw is usable without Direct3D but there are no 3D rendering capabilities +exposed to the applications in that case.
+Direct3D8 is a standalone component, no need for DirectDraw to use it. In spite of +that it is a good idea to copy DDraw.dll along with D3D8.dll because a lot of movie +playback system (e.g. DirectShow) rely on DDraw even in D3D8 games. dgVoodoo DDraw +and D3D8 has the ability and internal support to cooperate if the situation requires. +
+
+All the interfaces of old DirectX (that is, all DirectDraw interfaces and +Direct3D 3/5/6/7/8 interfaces) are almost fully supported, and existing implementation +is improved version by version by more and more reverse engineering and finetuning. +
+
+Since DirectX is not a pure hardware-only rendering API, basically two types of +virtual video cards can be used, like back in the old days, hehe. Four extra +video card types are added to utilize different chipset features and provide correct +vendorID/hardwareID. +Available video card types: +

+
    +
  • + One that simulates an old SVGA with hw-capabilites only for 2D blitting + operations.
    With such a card, only a software 3D rendering device can be used. +
  • +
    +
  • + One (imaginary) video card that has its custom hw 3D rendering support.
    + This card provides support for full hardware acceleration including + 'Transform & Light'. +
  • +
    +
  • + GeForce4 Ti 4800 +
  • +
  • + ATI Radeon 8500 +
  • +
  • + Matrox Parhelia-512 +
  • +
  • + GeForce FX 5700 Ultra +
  • +
+ +

+For more detailed capabilities, see the technical info. +

+Software rendering devices does not use real software rendering in dgVoodoo. I +think that a software rasterizer has no reason for existence nowadays and didn't +want to write one just for fun so they use hw accelerated rendering in the +background. The point is, towards the applications they logically appear as +software devices. +

+DirectX renderer needs less GPU power (for general cases) than Glide renderer but +it uses relatively complex precompiled shaders too (since whole of the fixed +function vertex/pixel pipeline has to be mapped to pure shader functionality). +

+DX emulation has a method for fast CPU-access of locked surfaces. The current +method is not the final version and going to be improved later. +The reason of not using that one all the time but it is up to the user's choice +is that this method is not 100% safe and can cause crashes under certain +circumstances. It depends on the wrapped application. +

+Important to note that compatibility with MS DirectDraw is not completely +guaranteed, especially with very old applications written in the win95/Win98 era. +Those applications might utilize DirectDraw/GDI interaction which is not fully +supported in dgVoodoo. I would like to improve that somehow, in later versions. +

+ +
+

+3. Some technical info +

+ +

+I say 'almost fully supported' when talking about DX support because there are +some functions on certain interfaces of which functionality is somewhat unclear +or totally unimportant, so they either not implemented at all or just +partially because I did not have time and patience to figure out their exact +behavior. Think about a total of 5-6 functions of all the DX interfaces, +I hardly believe that anything used them. +

+For DX8.1, the following features are not implemented but planned to be in the +future: +

+
    +
  • Higher-Order Primitives (maybe some day)
  • +
+ +

+................................................................................ +

+ +Internal virtual 3D card has the following 3D hardware capabilities: + +

+ +
    +
  • Supports transforming and all kind of lighting with flat, Gouraud and Phong + shading, max 8 active lights
  • +
  • Supports 6 clipping planes
  • +
  • Supports vertex bending with 3+1 weights
  • +
  • Supports matrix palette of 256 elements for indexed vertex blending
  • +
  • Supports texture coordinate generating & transformation, projective texturing
  • +
  • Supports all contemporary pixel formats for textures and render targets with + four different RGBA order (altough the order is not yet exposed in the CPL app)
  • +
  • Supports compressed textures (DXTC1-5)
  • +
  • Supports volume textures with limited number of texture formats
  • +
  • Supports Z-buffer (of course) and stenciling (but there is no W-buffer)
  • +
  • Supports vertex and pixel fog
  • +
  • Supports colorkeying with one texture (with colorkey blending or + colorkey discarding)
  • +
  • Supports all texture sampling modes
  • +
  • Paletted textures
  • +
  • Depth textures
  • +
  • 16 vertex streams
  • +
  • Vertex tweening
  • +
  • Supports point sprites
  • +
+ +

+* Additionally, if dynamic shader compiling IS NOT AVAILABLE then +

+ +
    +
  • Supports 4 texture stages and all DX7-level texture blending operations and + arguments on each of them including bump mapping
  • +
  • DX8-level vertex/pixel pipeline is UNAVAILABLE
  • +
+ +

+* if dynamic shader compiling IS AVAILABLE then +

+ +
    +
  • Supports all of the 8 texture stages and all DX8-level texture blending + operations and arguments on each of them
  • +
  • All types of DX8.1 bytecode shaders are supported
    + + vs1.0, vs1.1
    + ps1.0, ps1.1, ps1.2, ps1.3, ps1.4
  • + +
  • 256 vertex shader constants
  • +
+ +

+The other 4 card types are not an exact emulation of the given chipsets with some +real ATI/nVidia/Matrox driver version. They are just present to bias the available +rendering capabilities and properties toward a real ATI, nVidia or Matrox card: +

+ +

+GeForce4 Ti 4800 capabilities: +

+ +
    +
  • Same as the internal virtual 3D card, except:
  • +
  • No 32 bit z-buffer support
  • +
  • Full cut colorkeying
  • +
  • No indexed vertex blending
  • +
  • Maximum supported pixel shader version is ps1.3
  • +
  • Max 96 vertex shader constants
  • +
+ +

+ATI Radeon 8500 capabilities: +

+ +
    +
  • Same as the internal virtual 3D card, except:
  • +
  • No 32 bit z-buffer support
  • +
  • Plain colorkeying
  • +
  • Max 57 matrices for indexed vertex blending
  • +
  • No paletted texture support
  • +
  • 8 vertex streams
  • +
  • Max 192 vertex shader constants
  • +
+ +

+ + Matrox Parhelia-512 capabilities: + +

+
    +
  • Same as the internal virtual 3D card, except:
  • +
  • No 32 bit z-buffer support
  • +
  • Plain colorkeying
  • +
  • No paletted texture support
  • +
  • Maximum supported pixel shader version is ps1.3
  • +
+ +

+ + GeForce FX 5700 Ultra capabilities: + +

+
    +
  • Same as the internal virtual 3D card, except:
  • +
  • No 32 bit z-buffer support
  • +
  • Full cut colorkeying
  • +
+ +Since I cannot enumerate all the capabilities here, check them out with DXCapsViewer if interested.
+Also, those capabilities might be changed in the future if I get more accurate information about the hardwares in question. + +

+................................................................................ +

+DirectDraw and Direct3D objects supports all types of rendering devices that are +supported in original DirectX.
+Direct3D8 support HAL and software device types. +

+In MS pre-Direct3D8 implementations Direct3D7 is the only one that can be used with +hardware vertex transformation and lighting, through a Transform & Light (T&L) +device (but I guess it casually falls back to software vertex processing if the +device driver does not support the complete vertex operation pipeline that is +currently set). +

+In all other cases software vertex processing is used. In dgVoodoo vertex +processing is always routed to the hardware when possible.
+However, it's not so simple: software vertex processing is unavoidable in Direct3D +in some cases, for example when an application wants Direct3D to do only vertex +processing without rendering or to calculate visibility, or, when the rendering +extent must be updated when drawing primitives through a non-T&L device (this is +not too important in practice but I included it because of full compatibility). +Also, vertex processing for Direct3D3 can only be done in software because of the +execution logic of execute buffers.
+It all means that dgVoodoo has a software T&L vertex processing engine like +MS Direct3D for such cases, duplicating the hw functionality. However for +transforming, bending, lighting, fogging and texture coordinate transforming +calculations dgVoodoo uses fast vectorized SSE2 code instead of scalar FPU. +

+(It should be noted that in newer DX version like DX7 MS uses SSE2 too. + What is more, for software emulation of vertex shader code in DX8, MS seems to + apply an internal compiler, that compiles from shader code to x86 bytecode. + Wow, what a nice feature!! I should do the same, but probably it all is not too + relevant on modern CPUs.) +
+
+ +Phong shading (per-pixel shading) is not supported by MS Direct3D, only +Gouraud (per-vertex). However the internal virtual 3D card can externally be +forced to Phong shading through the CPL app but keep in mind that it can cause +heavy GPU usage because Direct3D lighting is quite complex, typical hardware +implementations supports 8 active lights with a lot of properties and components. +Also, Phong shading is only applicable when the application commits all its +transforming and lighting calculations to the D3D runtime. Unfortunately it is +very common that games do their own T&L calcs and use D3D as a lowlevel rasterizer +for the rest. It is especially true when a game is written for multiple platforms +or multiple 3D APIs like Glide, D3D, OpenGL, etc. Direct3D3 always uses software +vertex processing so Phong shading cannot be applied there at all. +

+DX8 is a horse of another colour from the beginning of a new era. Applications +written for that usually heavily utilize multiple vertex streams through real +vertex and index buffers along with built-in hw T&L pipeline and/or shaders +without any calculations done in software. +

+Phong shading is only applicable with full fixed function vertex/pixel pipeline +usage. If an application is rendering through a vertex and/or pixel shader in DX8 +then Phong cannot be utilized. +
+ +

+ +
+

+4. Application resolutions and refresh rates +

+ +

+An application using DirectX can only detect available resolutions and +associated refresh rates by asking DirectDraw/DX8 to enumerate them. There are two +slight problems with it in practice: +

+
    +
  • Modern hardware does not necessarily report some low resolutions like 320x200, + 640x480, etc.
  • +
  • Old hardware was not able to report refresh rates or query the current one in + general, back then when 60/75Hz CRTs were the standard displays. Thus, most of + the games/applications just used 0 for refresh rate when setting the resolution + which means 'unspecified or default' refresh rate.
  • +
+ +

+To workaround the first case, dgVoodoo keeps a list of 'classic' resolutions. +These are the following: +

+ + +
    +
  • 320 x 200 (X-mode is also supported in DDraw)
  • +
  • 320 x 240, (X-mode is also supported in DDraw)
  • +
  • 640 x 400,
  • +
  • 640 x 480,
  • +
  • 800 x 600,
  • +
  • 1024 x 768,
  • +
  • 1280 x 1024
  • +
+
+ +

+If a resolution of that list is not amongst the ones that your modern adapter +reports then dgVoodoo forces enumerating it to the application. +

+As for the refresh rates, if an application does not specifify one of the +enumerated ones but specifies 0 (default) then dgVoodoo finds and applies the +natively supported one that is most closest to 60Hz. +

+If you want to make sure or would like to use a custom refresh rate then +you can override that through the resolution selector combo box (DirectX tab).
+For details, see chapter 'Resolution and refresh rate overriding' in the general readme. +

+If the refresh rate is overridden then all resolutions are enumerated with the +overidden value to the applications. +

+ +
+

+5. About fullscreen and windowed mode +

+ +

+Choosing fullscreen or windowed working mode is part of the DirectDraw API. Some +games or demoscene stuffs run only in fullscreen so one could think what cool it +would be to have them running in windowed mode. I thought the same so wanted to +enable by default the same method to switch between them as used for Glide. +There are some problems however: the ways handling fullscreen and windowed mode +via DirectDraw are totally different in the aspect of the driving code. So, +forcing an application into an unexpected situation may cause glitches or crashes. +Also, a game may have its on mechanism for mode switching with which dgVoodoo +could conflict. Due to those theoretic things, and because I experinced some +problems with some games, I decided to emulate the original DirectDraw behavior +by default: when a fullscreen application loses the focus then its window gets +minimized and when it regains that its window is restored and enters fullscreen +again and no manual switch is available. Also, there are no changes applied on the +app window like style and overridden messages, etc. +

+If you make sure that a given game does not conflict with dgVoodoo's Alt-Enter +thing then you can enable that in the CPL app. Also, you can force it to windowed +mode if 'app controlled fullscreen/windowed' option is disabled at the game +startup (and choose windowed mode in the general settings), without Alt-Enter. +Forcing a windowed application to fullscreen can only be done by manual switch +because there is no way to 1) detect when an application begins its rendering and +2) switch to fullscreen. +

+(But, think about it, windowed to fullscreen does not make any sense. The +resolution used comes from the window size but the window may get resized or +repositioned when switching mode, so..., it's confusing.) +

+What is more, since DirectDraw was a one-monitor-API in practice, integrating windowed +applications in a multimonitor environment is already a problem even for MS, +I think. If such an app is even forced to fullscreen mode then it may crash or +misworks for reasons I do not want to word here. +

+Lost mode is emulated in default DX emulation mode, namely when switching +between windowed/fullscreen mode by Alt-Enter is disabled. This is because some +DX applications count on losing their surfaces when their window loses focus and +their code paths can be mislead if they remain 'unlost'. (This is a result of bad +programming technique as DX SDKs clearly state that an application shouldn't +rely on window focus lost or any other circumstances.) +

+On the other hand, there are incomplete or buggy DX applications that can't +restore when they get reactivated and just get stuck. So, introducing lostmode +emulation is up to a potential feature loss, as such applications likely worked +well with older dgVoodoo versions. In order to keep this feature dgVoodoo applies +auto-restore for the needed elements when such a situation is detected. +

+ +
+

+6. DirectX Control Panel (CPL) options +

+ +
    +
  • Disable and passthru to real DirectX +

    + As it says, if you want to disable DirectX without + removing dgVoodoo's DLLs then use this option. +

  • + +
  • Videocard +

    + You can select between the internal virtual 2D (SVGA) + and 3D accelerated cards. +

  • + +
  • VRAM +

    + Onboard videomemory of the selected videocard. +

  • + +
  • Filtering +

    + Various texture filtering modes can be forced here, starting from simple point sampled to high level anisotropic. + Keep in mind however that forcing other than the application default can result in rendering glitches, or it can + completely break some visual effects! +

  • + +
  • No mipmapping +

    + Disabling mipmappig (forcing largest mip texture level). +

  • + + +
  • Resolution +

    + Here you can override the application resolution and + refresh rate. See detailed explanation of static/dynamic + resolutions in the general Readme. +

  • + +
  • Antialiasing +

    + For 3D rendered surfaces you can force MSAA. + Option 'Application controlled' is meaningful only for DX8. For DDraw/DX it is equivalent to 'Off'. +

  • + +
  • Application controlled fullscreen/windowed state +

    + Since choosing this state is part of DirectDraw, you + must disable this option to control that via general + settings. +

  • + +
  • Disable Alt-Enter to toggle screen state +

    + To prevent conflicting with an application built-in + Alt-Enter handler. +

  • + +
  • Bilinear blit stretch +

    + 2D bitmap copying can involve stretching in DirectDraw. + However the applied stretching filter cannot be controlled + via the API and early hw used simple point sampling. + It can result pixelated appearance here and there but + you can force bilinear filtering which looks cooler for + most cases. But, it can also introduce various artifacts + especially when colorkeying is also applied during + blitting.
    + Try forcing bilinear texture filtering for achieving similar + effects for D3D8 games. +

  • + +
  • Apply Phong shading when possible +

    + See technical info. +

  • +
  • Force vSync +

    + Forcing vertical retrace. +

  • +
  • Fast video memory access +

    + Provides an alternative method for accessing video memory + of DX surfaces by the CPU. Try this one if an application + renders at a low frame rate. +

  • +
  • dgVoodoo Watermark +

    + Similarly to 3Dfx watermark in Glide, you can use + dgVoodoo's own one to see if something is driven through + dgVoodoo's DirectX. +

  • +
+ +
+

+7. Tips and known issues +

+ +
    +
  • Always try to run an application with 'application controlled fs/windowed state' + and disabled 'Alt-Enter' for the first time. If 'Alt-Enter' is enabled then + the wrapper makes some changes to the application window which can cause some + applications to miswork or even crash.
  • +
  • Also, always try an application without enabling 'Fast video memory access' for + the first time as that method may be unsafe for the application in question, and, + unortunately can cause inappropriate working. +
  • +
  • + Upscaling (forcing resolution) for old 8 bit paletted DDraw applications are not + recommended. Paletted things and forced resolution don't work well together, + but I want to fix it in the future.
    + Upscaling scenes by forcing resolution, where no 3D-rendered objects are presents, + has no sense anyway. +
  • +
  • Forcing vertical retrace is not always a good idea. There are games of which + loaders refreshes the screen at maximum speed (without vertical sync) while + loading textures, meshes, etc. If vSync is forced to on then it can take ages + while it all gets over.
  • +
+ +
+

+ + + 8. Why doesn't dgVoodoo DX emulation start up? + + +

+

+ I got reports about cases with dgVoodoo DirectX emulation not starting up. + The story is simple, one copies the DX dll files into the given application folder, + next to the executable, makes sure that DX emulation is enabled on the CPL, and in + spite of that, when starting the application dgVoodoo isn't utilized at all, dgVoodoo + watermark doesn't show up in the corner if the app starts at all. + Thanks to the Guys on Vogons, who are helping me a lot, they come out with 2 reasons: +

+
    +
  • + Some of the DX dlls (ddraw.dll, d3d8.dll) are registered in the KnownDLLs section of + the Windows registry. When they are then the operating system always loads the system + versions of those dlls. Removing the entries from
    + "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs"
    + is undangerous and can be safely done with Regedit. + This issue causes the majority of the problems. +
  • +
  • + A bit marginal but existing problem with DirectDraw is that it can be initialized through + Windows' OLE mechanism which identifies objects with GUIDs. The 'GUID-dll name' pairs are + also stored in Windows registry but Microsoft switched to absolute dll paths in Windows 8(?) + instead of the relative ones present in Windows 7, so the OLE-accessed DirectDraw is always + the system one in that case. The registry entries in question can be changed back to relative paths, + but since Regedit requires TrustedInstaller privilege level for that, and you have to search for + the entries yourself, it is a complicated process, I don't recommend you to experiment with it. + Luckily most of the old programs access DirectDraw directly, bypassing OLE. +
  • +
+

+ I know that these details are technical like hell, and I don't at all expect an average user to + tinker the operating system registry by hand. I just write this info here because I think it's useful for + advanced users and experts to begin with. A dgVoodoo tool doing it all would be fine but currently doesn't + exist one. +

+ + + + \ No newline at end of file