VOGONS


dgVoodoo 2 for DirectX 11

Topic actions

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

Reply 1161 of 3949, by VEG

User metadata
Rank Newbie
Rank
Newbie

So, if one ports an old Glide app from 16 bit to 32 bit rendering then the Z-values for grBufferClear must be scaled to 24bit too. In case of w-buffering, the code can be left unchanged.

Thank you for this information. I've updated outbin.7z. Now it works in 32bpp.

Fixes:
— grBufferClear: depth = (bpp==32 ? 0x00FFFFFF : 0x0000FFFF).
— grLfbReadRegion: dst_stride = width * (bpp==32 ? 4 : 2).
— grLfbWriteRegion: src_stride = width * (bpp==32 ? 4 : 2) and src_format = (bpp==32 ? 4 : 0).

Do you know any other Glide API functions where some fixes for 32bpp mode are required? 😀

Also there is one problem with embedded screenshot feature, which uses grLfbReadRegion (by pressing Alt+P during gameplay). For some reason it saves only the first half of the screen, and the second half of the screen is black when any 32bpp mode is used:

2015-10-27-23-07-12-94fcf461.jpg

Currently, I have a headache, so I'll try to investigate this problem a little bit later.

Last edited by VEG on 2015-10-28, 05:33. Edited 1 time in total.

Best regards, Evgeny

Reply 1162 of 3949, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

dgVoodoo2's MSAA implementation results in cursor trails in The Longest Journey. Not that it matters since dgVoodoo2 allows you to use ReShade for much more flexible post-processing antialiasing than any alternative.

Nvidia FXAA (best option available when running the game natively, so blurry):

Clipboard01.png
Filename
Clipboard01.png
File size
901.98 KiB
Views
3197 views
File license
Fair use/fair dealing exception

dgVoodoo2 + ReShade + SweetFX (seems like a perfect compromise between blurriness and jaggies with no tweaking of settings):

Game_2015_10_27_22_14_10_920.png
Filename
Game_2015_10_27_22_14_10_920.png
File size
901.98 KiB
Views
3197 views
File license
Fair use/fair dealing exception

No AA (very ugly imo):

Game_2015_10_27_22_18_32_877.png
Filename
Game_2015_10_27_22_18_32_877.png
File size
901.98 KiB
Views
3197 views
File license
Fair use/fair dealing exception

You need to view in fullscreen to truly appropriate how bad Nvidia FXAA is for this game. Oh and dgVoodoo2 does not work with the GoG build of the game. Wonder what GoG did to break it... Dialog windows are an annoyance (overwrite save, exit game), but I'm guessing that's GDI integration again.

Last edited by ZellSF on 2015-10-27, 23:28. Edited 1 time in total.

Reply 1163 of 3949, by Rod Primitive

User metadata
Rank BANNED
Rank
BANNED

Can't get Kiss to work decently enough at all. I read some posts about it on here, but it didn't help me.
Windows 8.1 x64

I'm currently having fps drops, 'specially when killing and gibbing enemies.
When I start the game it is so slow! It takes minutes to navigate the menues and the cursor's stuttering even worse.
This goes away when I start playing, or for some reason, open the graphics menu.
Also, there's this blue box around the cursor. But only if the cursor is on the left 50% side of the screen.
During cutscenes the picture freezes on the right 50% black bar, both the above and the under.

What I've done myself so far:
I've put the "D3DImm.dll", "DDraw.dll" and "dgVoodooSetup.exe" in the root folder of Kiss. Then I've changed some of the settings in the setup program:
Config folder: c:\games\psycho
General:
API: D3D 11
Adapters: all of them
Full screen output: default
Appearence:
Full screen checked
Scaling: stretched

DirectX:
Videocard: dgVoodoo Virtual 3D Accelerated Card
VRAM: 64MB
Resolution: 1920x1080 (of course)

And in the game it doesn't matter what I choose, dgVoodoo or (in my case) Nvidia Geforce GTX 970.
They both work the same explained above way.

I'm this close to toss my PC out of the window. Someone please help me fix this.

Reply 1164 of 3949, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
VEG wrote:

Do you know any other Glide API functions where some fixes for 32bpp mode are required? 😀

Also there is one problem with embedded screenshot feature, which uses grLfbReadRegion (by pressing Alt+P during gameplay). For some reason it saves only the first half of the screen, and the second half of the screen is black when any 32bpp mode is used:

I think there are no other extra needs for handling 32bpp, except for lfb operations:

- grLfbLock ignores parameter writeMode for read and defaults to FMT_565 in 16bit mode and FMT_8888 in 32 bit mode
- grLfbReadRegion is also reads pixels in FMT_565 and FMT_8888, according to the pixel size mode

Screenshot seems to be a bug in dgVoodoo. My grLfbReadRegion always use 2 byte as pixel size, that explains the left-half-only thing. 😀
I'm not sure if it's a single bug or I just insisted to some policy, like the one, that grLfbReadRegion doesn't have a color format parameter so it's always FMT_565 independently on the buffer mode (16, 32).
Seeing the original Glide3 source, grLfbLock seems to handle bitbpp right, and grLfbReadRegion internally use this function to lock the buffer and read back pixels.
grLfbReadRegion also handles bitpp properly, but, on PowerPC it always treats pixels having 2 byte size..., don't know why.
Unfortunately that Glide source seems to me to be a big mess, as if the base 2.x API were being extended to the new hw features without proper considering. Or, at least, the documentation in the SDK wasn't adjusted to that.
For example, what if one drives Glide3 in 32bit mode but locks a texture buffer which is 16 bit? According to the sources, texture buffer is seen 32bit via grLfbLock to the application because that function only checks the 'global' bitpp set through but the stride is set to a 16bpp one, etc. It even works differently on UMA hw's if I get it right...

Rod Primitive wrote:
Can't get Kiss to work decently enough at all. I read some posts about it on here, but it didn't help me. Windows 8.1 x64 […]
Show full quote

Can't get Kiss to work decently enough at all. I read some posts about it on here, but it didn't help me.
Windows 8.1 x64

I'm currently having fps drops, 'specially when killing and gibbing enemies.
When I start the game it is so slow! It takes minutes to navigate the menues and the cursor's stuttering even worse.
This goes away when I start playing, or for some reason, open the graphics menu.
Also, there's this blue box around the cursor. But only if the cursor is on the left 50% side of the screen.
During cutscenes the picture freezes on the right 50% black bar, both the above and the under.

This all sounds bad. 🙁
What if you run the game natively?
Do you have this problem only with this game or others too?

Reply 1165 of 3949, by Rod Primitive

User metadata
Rank BANNED
Rank
BANNED
Dege wrote:

This all sounds bad. 🙁
What if you run the game natively?
Do you have this problem only with this game or others too?

If I run it native the framerate is abysmal, no matter if I start a new game or entering the video options menu.
I have this problem with Kiss, and also Blood 2. AvP 2 works great though, with dgVoodoo that is. Otherwise it becomes a native mess in (Windows) 7 and 8.1 as well.
Oh, and compability modes doesn't do much either.

Update 151031: I tried Kiss with dgVoodoo on my Windows 7 laptop, and it worked great. I can run the game at max resolution and it performs smooth as butter.
So I guess Windows 8/8.1 is all to blame. Again. Piece of shit OS.

Reply 1166 of 3949, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
Rod Primitive wrote:
If I run it native the framerate is abysmal, no matter if I start a new game or entering the video options menu. I have this pro […]
Show full quote
Dege wrote:

This all sounds bad. 🙁
What if you run the game natively?
Do you have this problem only with this game or others too?

If I run it native the framerate is abysmal, no matter if I start a new game or entering the video options menu.
I have this problem with Kiss, and also Blood 2. AvP 2 works great though, with dgVoodoo that is. Otherwise it becomes a native mess in (Windows) 7 and 8.1 as well.
Oh, and compability modes doesn't do much either.

Update 151031: I tried Kiss with dgVoodoo on my Windows 7 laptop, and it worked great. I can run the game at max resolution and it performs smooth as butter.
So I guess Windows 8/8.1 is all to blame. Again. Piece of shit OS.

ZellSF wrote:
1: Download https://www.microsoft.com/en-us/download/deta … s.aspx?id=30652 2: You only want to install the Application Compati […]
Show full quote

1: Download https://www.microsoft.com/en-us/download/deta … s.aspx?id=30652
2: You only want to install the Application Compatibility Toolkit part.
3: Run "Compatibility Administrator (32-bit)"
4: Expand "Applications" in the left pane, find KISS Psycho Circus The Nightmare Child and select it
5: on the right pane, right click all client.exe and psycho.exe entries and click disable entry.

Quoting myself. It works perfectly under Windows 8.1, like anything else.

Reply 1167 of 3949, by Rod Primitive

User metadata
Rank BANNED
Rank
BANNED
ZellSF wrote:

Quoting myself. It works perfectly under Windows 8.1, like anything else.

I did this as well but to no avail. After some major testing on my Windows 7 laptop however, it turns out I can max out Blood 2 and Shogo as well with dgVoodoo. It's time to relive the memories!

Reply 1170 of 3949, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

One thing that does occur to me: are you using compatibility modes? Win95/Win98 compatibility modes should be avoided in Win8 unless the games actually need them. I know some people automatically think Win95 games should run under Win95 compatibility mode.

Reply 1171 of 3949, by Rod Primitive

User metadata
Rank BANNED
Rank
BANNED
ZellSF wrote:

One thing that does occur to me: are you using compatibility modes? Win95/Win98 compatibility modes should be avoided in Win8 unless the games actually need them. I know some people automatically think Win95 games should run under Win95 compatibility mode.

No, I never use them since they haven't helped me in any shape or form before.

Reply 1172 of 3949, by Expack3

User metadata
Rank Member
Rank
Member

As it would happen, King's Quest: Mask of Eternity is, in fact, supported by dgVoodoo2 - but you'd only know that if you only were using dgVoodoo2's DirectX support, and not also using dgVoodoo2 Glide support or using the system-wide nGlide wrapper. That said, my quest to uncover this information has lead to a surprising discovery: if you use dgVoodoo2's DirectX support with Mask of Eternity and force on dynamic lighting in the Options.cs file, the game runs faster that it would on actual hardware. The reason for needing to force dynamic lighting in Direct3D mode is apparently due to the dynamic lighting system running unacceptably slow on authentic Direct3D hardware.

However, there does seem to be an actual issue with Mask of Eternity's Direct3D mode and dgVoodoo2, at least with the GOG.com version, namely that whenever the mouse is positioned over character dialogue captions, the game's graphics noticeably freeze, then jump to wherever they're supposed to be in the current frame.

Reply 1173 of 3949, by NightSprinter

User metadata
Rank Member
Rank
Member

Not sure what I am doing wrong, but been having severe issues getting this to work at all. For example: GLQuake refuses to run due to requiring my desktop be at 16-bit depth. Otherwise, it wrecks my graphics driver to the point of uninstalling and re-installing them (makes my display Geddan in a very bad way). Here are the specs of my workstation for those interested:

CPU: Core i7 920
6GB DDR3-12800
Seagate 500GB SATA2
ATI Radeon 7870 2GB
Win 10 Pro X64
GPU Driver: AMD Catalyst 15.7.1

[Edit] Huh, turns out the included glide dll files with the wrapper are what screws it up. Forgot if these were files from nGlide or otherwise, but the Glide.dll, Glide2x.dll, and Glide3x.dll files I have are all between 1.3-1.4MB in size (compared to dgVoodoo2's which are 63KB each). Why would (aside from apparently not being able to do 16-bit color in Win10 to start) such small sized files wreak so much havoc for me?

Reply 1175 of 3949, by teleguy

User metadata
Rank Member
Rank
Member
Dege wrote:

The things now is that I secretly planned DX8 support long ago and recently I realised that it's worth better to do the needed internal improvements before any other additional development to avoid 'double bugfixing' later (even if DX8 won't be part of the next version).
Of course I keep testing the wrapper continuously to avoid breaking things but the current state is still not a final one.

Great news!

Is there any chance OpenGL support will be added someday as well? I recently tried to get several old OpenGL games working and realized there are only a few wrappers available and most of them are outdated so the games wouldn't even launch. Even those wrappers that worked showed severe glitches that made playing impossible.

Reply 1176 of 3949, by VEG

User metadata
Rank Newbie
Rank
Newbie

It seems that dgVoodoo sends WM_ACTIVATEAPP(TRUE) message even when game window isn't active. I'm using this message for registering and unregistering of the global hotkey PrtScr for internal game screenshoter. All works fine with other renderers, but when dgVoodoo is used, this global hotkey works even when game window isn't active. Can you see if it is a dgVoodoo bug or some bug in the my code?

For testing: http://veg.by/files/nfs3/outbin.zip
Use this ini-file:

[NFS3]
ThrashDriver=dgvoodoo
NoMovie=1
Language=english
SingleProcAffinity=0
OwnHeapLimitMb=32
DisableWinKey=1
NoErrorReporting=0
[SCREENSHOTER]
Enable=1

Try to press PrintScreen or Win key when game window is not active.

I've seen sent messages using Spy++, and it seems that dgvoodoo forces WM_ACTIVATEAPP(TRUE) when window isn't active in fact.

Best regards, Evgeny