VOGONS


dgVoodoo 2.6.x and related WIP versions

Topic actions

Reply 240 of 276, by Dege

User metadata
Rank l33t
Rank
l33t

I experienced this with some games but I'm going to check out the reasons later (especially that D3D11 and 12 swapchains are a little bit different and so behave differently).

Btw, I released a new version for the cumulated fixes:

- Bug causing crash is fixed in D3D (Hot Wheel Micro Racers)
- Fixing a bug in the DXBC generator (Psychonauts)
- Fixing a bug in the DX11 backend causing corrupted textures (RIM - Battle Planets low texture quality)
- Fixing a bug in D3D9 frontend (Hydro Thunder MAT3 crash)
- Fixing an old limitation in dgVoodoo internals (crash with Atomic FE)
- Dithering did not work with Glide3 Napalm build - fixed
- Fixing malfunctioning auto-aspect ratio correction for swapchains unexpectedly forced back to windowed mode
- Fixing broken dynamic resolution/MSAA/output config change in Glide

http://dege.fw.hu/dgVoodoo2/dgVoodoo2_64.zip
http://dege.fw.hu/dgVoodoo2/dgVoodoo2_64_dbg.zip

Reply 243 of 276, by legion_pheonix

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2020-06-17, 13:31:

Invalid password "dege"
Can you say something about my question?
Re: dgVoodoo 2.6.x and related WIP versions

Reply 245 of 276, by Dege

User metadata
Rank l33t
Rank
l33t
legion_pheonix wrote on 2020-06-09, 20:29:

Heretic II (1.06 or 1.07) has a black screen if I select 3dfx with dgvoodoo2 Glide2x.dll. At the same time, I hear the sounds of the menu if they start to press the arrow buttons. The only thing, the splash screen does not play with 3dfx.

I tried this game but doesn't work with 3DfxGL => dgVoodoo.
I don' t understand why but driver threads get stuck into an infinite waiting when exiting (with both DX11, 12) ('application not responding' state). Must be some compatibility option.
Does it make sense to play this game through dgVoodoo instead of native OGL?

Reply 246 of 276, by xcomcmdr

User metadata
Rank Oldbie
Rank
Oldbie

My experience with Heretic II (with Heretic II Enhancement Pack v1.07 installed) :
- On some rare occasions (GPU hardware-dependant. Namely an old Thinpad T43 with an ATI Mobility Radeon x300 on Windows 7 SP1 x86, not relevant nowadays), native OpenGL doesn't work. The GlDirect wrapper fixes that (it translates OpenGl to Direct3D)
- dgVoodoo2's 3DFX emu doesn't work with it, nor does any kind of Glide or OpenGL wrapper
- I did not use any compat' options. My setup targeted Windows XP, Windows Seven, and Windows 8, and 10. All of the compat' options broke the game at worst. They were not useful anyway, 100% of the time the game ran fine.

The Enhancement pack comes with an optional and specific 3dfxgl mini driver, but that broke the game too, whatever the hardware / windows version. Surely, my Windows XP PC with a Voodoo 2 wasn't enough. It ran fine with its GeForce 4 Ti 4800.

Reply 247 of 276, by legion_pheonix

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2020-06-30, 18:37:

I tried this game but doesn't work with 3DfxGL => dgVoodoo.
I don' t understand why but driver threads get stuck into an infinite waiting when exiting (with both DX11, 12) ('application not responding' state). Must be some compatibility option.
Does it make sense to play this game through dgVoodoo instead of native OGL?

I managed to find an alternative solution to launch the game.
I installed patch 1.07, but edited it with the hex editor quake2.dll, as it was in version 1.00. In 1.07, the problem with brightness and gamma, I touched on these parameters.
I used DxWND (forced OpenGL Hook) and then put opengl32.dll (QeffectsGL) in the "Drivers" folder. Put the config in the root of the "Heretic II" QeffectsGL.ini folder.

QeffectsGL.ini

[Generic]
RenderFrame=1
-------------------
Anisotropy=8
-------------------
Multisample=0
-------------------
Bloom=0
BloomSteps=5
BloomDarken=5
BloomScale=1.5
-------------------
SSAO=0
SSAOScale=2
SSAOMinZ=0.005
SSAOMaxZ=1
-------------------
Hue=0
-------------------
Saturation=0
-------------------
Lightness=0
-------------------
Emboss=0
EmbossScale=0.5
-------------------
DOF=0
DOFSpeed=1
DOFScale=1.5
-------------------
Vignette=0
VignetteScale=1.5
-------------------

[{Heretic2.exe]
ExtensionLimit=0
ZTrickFix=1
ViewportFix=0
CompareMode=0

https://github.com/crystice-softworks/Qeffect … eleases/tag/1.3

After that I have 60fps stable and for the entire time of the game, the crash was to the desktop once.
With all this, the game starts up perfectly, the videos are played, the textures are all in place and do not lag.

Attachments

  • Filename
    My_patch.zip
    File size
    217.56 KiB
    Downloads
    104 downloads
    File comment
    My patch needs to be overlaid on 1.07.
    File license
    Fair use/fair dealing exception

Reply 248 of 276, by ZellSF

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2020-06-30, 18:37:
I tried this game but doesn't work with 3DfxGL => dgVoodoo. I don' t understand why but driver threads get stuck into an infinit […]
Show full quote
legion_pheonix wrote on 2020-06-09, 20:29:

Heretic II (1.06 or 1.07) has a black screen if I select 3dfx with dgvoodoo2 Glide2x.dll. At the same time, I hear the sounds of the menu if they start to press the arrow buttons. The only thing, the splash screen does not play with 3dfx.

I tried this game but doesn't work with 3DfxGL => dgVoodoo.
I don' t understand why but driver threads get stuck into an infinite waiting when exiting (with both DX11, 12) ('application not responding' state). Must be some compatibility option.
Does it make sense to play this game through dgVoodoo instead of native OGL?

Not really, You get no widescreen with 3Dfx, so it's the inferior way to run the game.

Resolution forcing might be one advantage people think dgVoodoo has, but DxWnd/Peixoto's patches can both do that (and if you don't mind some UI glitches; QindieGL with a D3D9 wrapper).

Other possible reasons is they want to play it at a "nostalgic" resolution where dgVoodoo's scaling options might be an advantage. And there's always the annoying game repackers, who want to use dgVoodoo since they can enable AF/MSAA in a way that doesn't involve graphic drivers.

Reply 249 of 276, by legion_pheonix

User metadata
Rank Newbie
Rank
Newbie
ZellSF wrote on 2020-07-16, 06:56:

Not really, You get no widescreen with 3Dfx, so it's the inferior way to run the game.

Resolution forcing might be one advantage people think dgVoodoo has, but DxWnd/Peixoto's patches can both do that (and if you don't mind some UI glitches; QindieGL with a D3D9 wrapper).

I've already found the perfect way to launch the game. OpenGL + DxWND best stable + support for widescreen resolution and 60fps.

Reply 250 of 276, by Asdow

User metadata
Rank Newbie
Rank
Newbie

So, I was trying to get Kult: Heretic Kingdoms to work with dgvoodoo 2.64, but unfortunately got hit by the AMD GPU texture bug that happens with some games when using dgvoodoo. Sometimes enabling fast video memory access gets rid of it, but in this case it had no effect. I recently found out that DXVK works also in windows 10 so thought "What if I use dgvoodoo to go from dx9 to dx11 and then DXVK to go from dx11 to Vulkan?" and amazingly, not only does it work, but it also gets rid of the texture bug!
Maybe this will also work in other games that are plagued by that AMD texture glitch and with any luck it'll maybe give you an idea on why it happens?

Screenshots below, notice the dgvoodoo watermark at the bottom right and the renderer changing from dx11 to vulkan in the top left corner of the screenshots.
Texture bug, DX9 -> DX11
https://i.imgur.com/FU0mrXN.png
https://i.imgur.com/xF7nvve.png

No texture bug, DX9 -> DX11 -> Vulkan
https://i.imgur.com/tYMdyhd.png
https://i.imgur.com/KcvbnDq.png

Reply 251 of 276, by Delfino Furioso

User metadata
Rank Newbie
Rank
Newbie
Asdow wrote on 2020-08-04, 21:06:

So, I was trying to get Kult: Heretic Kingdoms to work with dgvoodoo

do you have issues with the mouse cursor?
I've always wanted to try K:HK with dgVoodo but always faced the "double cursor" problem: there is some offset between the visible mouse pointer and the real position of the cursor which affect the interactions with the UI elements

judging by your screenshot, you are forcing the resolution using the "stretched" scaling mode - what happens if you opt for the "streched_ar" or the "stretched_4_3" scaler?

could you share your configuration file?

thanks!

Reply 253 of 276, by Asdow

User metadata
Rank Newbie
Rank
Newbie
Delfino Furioso wrote on 2020-08-05, 09:45:
do you have issues with the mouse cursor? I've always wanted to try K:HK with dgVoodo but always faced the "double cursor" prob […]
Show full quote
Asdow wrote on 2020-08-04, 21:06:

So, I was trying to get Kult: Heretic Kingdoms to work with dgvoodoo

do you have issues with the mouse cursor?
I've always wanted to try K:HK with dgVoodo but always faced the "double cursor" problem: there is some offset between the visible mouse pointer and the real position of the cursor which affect the interactions with the UI elements

judging by your screenshot, you are forcing the resolution using the "stretched" scaling mode - what happens if you opt for the "streched_ar" or the "stretched_4_3" scaler?

could you share your configuration file?
thanks!

The mouse cursor seems to function the same with or without dgvoodoo to me. There is a weird offset with the mouse pointer in the character creation screen and its ui elements but that's present in the game even when I have no wrappers active. Actual gameplay UI elements work fine, like in the inventory etc.
Stretched_ar or _4_3 work pretty much as expected.

Here's the config. Note that it's setup for a 4k resolution so you might need to change that.

;==========================================================================
; === Text based config file for dgVoodoo2
; === Use this file if you are a game modder/hacker or an experted user and
; want to modify some advanced properties not available via the CPL.
;==========================================================================

Version = 0x263

;--------------------------------------------------------------------------

[General]

; OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "d3d11_fl11_0", "d3d12_fl11_0", "d3d12_fl12_0", "bestavailable"
; Adapters: "all", or the ordinal of the adapter (1, ...)
;FullScreenOutput: "default", or the ordinal of the output on the adapter (1, ...)
; ScalingMode: "unspecified", "centered", "stretched", "centered_ar", "stretched_ar",
; "stretched_4_3", "stretched_4_3_crt", "stretched_4_3_c64"

OutputAPI = d3d11_fl11_0
Adapters = all
FullScreenOutput = default
FullScreenMode = false
ScalingMode = stretched
ProgressiveScanlineOrder = false
EnumerateRefreshRates = false

Brightness = 100
Color = 100
Contrast = 100
InheritColorProfileInFullScreenMode = false

KeepWindowAspectRatio = true
CaptureMouse = true
CenterAppWindow = false

;--------------------------------------------------------------------------

[GeneralExt]

; DesktopResolution: Desktop (native) resolution can be forced for dgVoodoo's internal calculations.
; Useful for rare applications that pre-set the desktop to other than the native
; resolution before dgVoodoo gets in action. Only the compact format can be used here,
; and applies to all outputs of the desktop.
; DesktopBitDepth: You can define what screen bit depth should be reported through dgVoodoo
; (8, 16, 32)
; DeframerSize: When resolution is forced to other than the app default then
; a black frame is drawn around the output image coming from a wrapped API
; to remove scaling artifacts -
; frame thickness can be defined in pixels (max 16, 0 = disable)
; ImageScaleFactor: Integer factor for scaling the output image coming from a wrapped API
; Always done by nearest point filtering, independent on scaling mode
; (0 = max available)
; Separate factors can be defined for horizontal and vertical scaling
; by subproperties, e.g.
; ImageScaleFactor = x:3, y:2
; DisplayROI: Display region of interest
; If scaling is done by the dgVoodoo then you can define a subrect of the
; output image, coming from a wrapped API, to be displayed. The defined subrect
; is mapped to the display output according to the current scaling mode
; It can be useful for applications rendering a widescreen subimage into a 4:3
Show last 226 lines
;                         resolution; in this case you can scale up that subimage to (nearly) fill the
; whole screen on a widescreen monitor.
; DisplayROI empty value means the whole image.
; DisplayROI value can be a proportion in form of %d_%d or a pixel size (%d|%d)
; Pos subproperty is not mandatory and can be 'centered' or a pixel position (%d|%d)
; Examples: DisplayROI = 16_9, pos:centered
; DisplayROI = (320|200), pos:(10|10)
; Resampling: When scaling is done by the dgVoodoo for the given scaling mode,
; you can choose which filter is to be used for resampling the output image
; Available filters are: "pointsampled", "bilinear", "bicubic", "lanczos-2", "lanczos-3"
; FreeMouse: If true then physical mouse is free to move inside the game window
; when using emulated scaling and/or application and forced resolution
; differs; can be useful when a game relies on the physical window size
; WindowedAttributes: You can define attributes for forced windowed appearance (separated by commas):
; "borderless" - forces the app window not have any border
; "alwaysontop" - forces the app window into the top-most band
; "fullscreensize" - forces the app window to be full screen size with image scaling inside
; Environment: Software environment in which dgVoodoo is running: can be left unspecified (native)
; or can be set to 'DosBox' or 'QEmu'.
; EnableGDIHooking: If enabled then dgVoodoo hooks GDI to be able to render graphical contents
; (like movie playback through the ancient Windows Multimedia AVI player library)
; rendered through GDI - experimental feature, for the time being it's implemented
; only for DX emulation

DesktopResolution = 3840x2160
DesktopBitDepth =
DeframerSize = 1
ImageScaleFactor = 1
DisplayROI =
Resampling = pointsampled
FreeMouse = false
WindowedAttributes = borderless
Environment =
EnableGDIHooking = false

;--------------------------------------------------------------------------

[Glide]

; VideoCard: "voodoo_graphics", "voodoo_rush", "voodoo_2", "voodoo_banshee", "other_greater"
; OnboardRAM: in MBs
; MemorySizeOfTMU: in kBs
; TMUFiltering: "appdriven", "pointsampled", "bilinear"
;
; Resolution: either "unforced", "max", "max_isf", "max_fhd", "max_fhd_isf", "max_qhd", "max_qhd_isf", "%d x"
; or subproperties: h: horizontal, v: vertical
; + optional subproperty refrate: refresh rate in Hz
; e.g. Resolution = max, refrate:60
; Resolution = 2x, refrate:59
; Resolution = h:1280, v:1024, refrate:75
; or just use the compact form like "1024x768@60" or "512x384"
;
;Antialiasing: "off", "appdriven", "2x", "4x", "8x", "16x" (your GPU must support the chosen one)

VideoCard = voodoo_2
OnboardRAM = 8
MemorySizeOfTMU = 4096
NumberOfTMUs = 2
TMUFiltering = appdriven
DisableMipmapping = false
Resolution = unforced
Antialiasing = appdriven

EnableGlideGammaRamp = true
ForceVerticalSync = false
ForceEmulatingTruePCIAccess = false
16BitDepthBuffer = false
3DfxWatermark = true
3DfxSplashScreen = false
PointcastPalette = false
EnableInactiveAppState = false


;--------------------------------------------------------------------------

[GlideExt]

; DitheringEffect: "pure32bit", "dither2x2", "dither4x4"
; Dithering: "disabled", "appdriven", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic (the aim is to have some retro feel&look)

DitheringEffect = pure32bit
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0

;--------------------------------------------------------------------------

[DirectX]

; VideoCard: "svga", "internal3D", "geforce_ti_4800", "ati_radeon_8500",
; "matrox_parhelia-512", "geforce_fx_5700_ultra"
; VRAM: in MBs (default) or in GBs (e.g. VRAM = 2GB)
; Filtering: "appdriven", "pointsampled", "bilinear", "linearmip", "trilinear"
; or the integer value of an anisotropic filtering level (1-16)

DisableAndPassThru = false

VideoCard = internal3D
VRAM = 8192
Filtering = pointsampled
DisableMipmapping = false
Resolution = max
Antialiasing = appdriven

AppControlledScreenMode = false
DisableAltEnterToToggleScreenMode = false

BilinearBlitStretch = false
PhongShadingWhenPossible = false
ForceVerticalSync = false
dgVoodooWatermark = true
FastVideoMemoryAccess = false

;--------------------------------------------------------------------------

[DirectXExt]

; AdapterIDType: "nvidia", "amd", "intel" or leave it undefined
; You can define what type of driver version and vendor id's the wrapper should report to
; the application; Some games rely on that information so it can be useful for them
; Can be defined only for SVGA and Internal3D card types; the others have their own wired
; information

; VendorID, DeviceID, SubsystemID, RevisionID:
; Can be defined only for SVGA and Internal3D card types
; You can overwrite these properties even if a non-default AdapterIDType is defined;
; say, you defined an nvidia id type but would like to refine the vendor id

; DefaultEnumeratedResolutions: you can define what resolutions should be enumerated to the application by default
; "all", "classics", "none"

; ExtraEnumeratedResolutions: you can add extra resolutions (separated by commas, max 16) that will get
; enumerated to the application as display adapter supported ones -
; can be useful if an app supports rendering at arbitrary resolutions
; and you have a particular favorite resolution that are not
; enumerated to the application by default
; you can either use the compact resolution format here, or
; "max", "max@refrate" meaning your desktop resolution with a potential refresh rate, or
; "max_4_3", "max_4_3@refrate", "max_16_9", "max_16_9@refrate"
; meaning the maximum resolution with the given aspect ratio calculated from
; the desktop resolution with the given refresh rate, e.g. "max_4_3@60", "max_16_9"

; EnumeratedResolutionBitdepths: you can filter what bitdepths are included in the resolution enumeration
; any subset of {"8", "16", "32"}, or "all"

; DitheringEffect: "pure32bit", "ordered2x2", "ordered4x4"
; Dithering: "disabled", "appdriven", "forceon16bit", "forcealways"
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
; 1 = normal, 2 = double size, etc.
; 0 = automatic
; DepthBuffersBitDepth: internal bit depth of depth/stencil buffers for 3D rendering (32 bit is not recommended)
; "appdriven", "forcemin24bit", "force32bit"

; MaxVSConstRegisters: Max number of vertex shader constant registers (DX8/9 only)
; Can be defined only for SVGA and Internal3D card types
; Valid values are 256 (default), 512 or 1024

; MSD3DDeviceNames: if true then original Microsoft D3D device names are exposed
; (some applications check for them and they fail)

; RTTexturesForceScaleAndMSAA: if true then forced resolution scaling and MSAA is
; applied also to rendertarget textures
; Set it to false for games requiring pixel-precise rendering
; but be careful it can EASILY break certain things, not recommended

; SmoothedDepthSampling: if true then extra smoothing is added to depth textures
; when they are sampled

; DeferredScreenModeSwitch: If true the switching to full screen is deferred after the application initialized
; the DirectX device; can be useful for games that don't expect rendering window changes
; during initialization and crash

; PrimarySurfaceBatchedUpdate: If true then direct changes of the primary surface are batched together for presenting them
; If false then each change is instantly presented (debug-like mode)

AdapterIDType =
VendorID =
DeviceID =
SubsystemID =
RevisionID =

DefaultEnumeratedResolutions = all
ExtraEnumeratedResolutions =
EnumeratedResolutionBitdepths = all

DitheringEffect = pure32bit
Dithering = forcealways
DitherOrderedMatrixSizeScale = 0
DepthBuffersBitDepth = appdriven

MaxVSConstRegisters = 256

MSD3DDeviceNames = false
RTTexturesForceScaleAndMSAA = true
SmoothedDepthSampling = true
DeferredScreenModeSwitch = false
PrimarySurfaceBatchedUpdate = false

;--------------------------------------------------------------------------

[Debug]

; This section affects only debug/spec release builds
;
; Info, Warning, Error
; "Disable" - disables all messages and debugger break
; "Enable" - enables messages and disables debugger break
; "EnableBreak" - enables both messages and breaking into debugger
;
; MaxTraceLevel: Maximum level of tracing API calls
; 0 - Disable
; 1 - API Functions and methods
; 2 - Additional trace info for internals
;
; LogToFile: if false or debugger is detected then output goes to the debug output
; if true and no debugger detected then output goes to 'dgVoodoo.log'
; (not implemented yet, always the default debug output is used)

Info = enable
Warning = enable
Error = enable
MaxTraceLevel = 0

LogToFile = false
Dege wrote on 2020-08-05, 11:57:

Bad AMD D3D11 driver. Use DX9->DX12 instead.

Huh... I could've sworn I tried DX12 as well but it was very late so maybe I overlooked it.

Reply 254 of 276, by mattcedler

User metadata
Rank Newbie
Rank
Newbie
Asdow wrote on 2020-08-04, 21:06:

So, I was trying to get Kult: Heretic Kingdoms to work with dgvoodoo 2.64

I cannot run this game with DgVoodoo 2.64 (and WIP75_1) there is a black screen and then the window closes

DebugView shows only one error, but not always and a warning when the window is closed

[6704] [dgVoodoo] ERROR: DirectDrawSurface (150627D4)::Unlock: Cannot unlock the whole surface while more than one portions of it are locked.
[6704] [dgVoodoo] WARNING: Leaked DDraw/D3D objects detected at unloading DDRAW (probably process exit)!

Full log in attachment

Attachments

  • Filename
    KULT.LOG
    File size
    3.07 MiB
    Downloads
    72 downloads
    File comment
    Full log
    File license
    Fair use/fair dealing exception

Reply 255 of 276, by fbaier

User metadata
Rank Newbie
Rank
Newbie

Hello Dege,

I'm a great fan of your work.
I'm using your "wrapper" inside of Wine/Lutris on Linux with older Windows games.

Quick questions on you:
1. Is possible for you to create an official "dgvoodoo2" source on github for you ?
2. Would you support/agree a cooperation between the Lutris developer and your work ?
3. Would you cooperate with the "DXVK" (Direct3D 9/10/11/12 to Vulkan) developers from Lutris/Wine/Proton ?

Your wrapper is working to deliver older DirectX games to Direct3D with Vulkan for me on Linux.

Kind regards,
Frank

Reply 256 of 276, by Dege

User metadata
Rank l33t
Rank
l33t

Hi Frank,

Thanks. But, well, I think: no. I want to keep dgVoodoo in its current form, so that, closed source + Win only.
Also, it already takes too much time to develop it, so I couldn't put more burden on my shoulders by cooperating other developers. 😐

Reply 257 of 276, by dummy13

User metadata
Rank Newbie
Rank
Newbie

Hello Dege,
Please fix dgvoodoo 2.6 to Ragnarok Gepard Server. I think it's already working, but the texture has a problem. Your 2.54 DgVoodoo are already working in Ragnarok Gepard Server, but it's limited to Directx8.

Reply 259 of 276, by dummy13

User metadata
Rank Newbie
Rank
Newbie

No sir dege. Latest version of dgvoodoo2 blocked by Gepard Shield. Game guard of Ragnarok Private Servers. The reason i want to fully function of Dgvoodoo2.6 is because it's not totally blocked by gepard and it's working, otherwise there are some bugs or not properly rendered the texture in game 🙁. Please help me sir dege