VOGONS


dgVoodoo 2 for DirectX 11

Topic actions

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

Reply 2201 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
Peixoto wrote:

Try cheat engine auto-assembly

mudlord wrote:

Wouldn't it be better to make a new PE section and then add the extra code? Or even use a extra DLL to store patch code?

Thanks for the tips! But unfortunately the patching effectively failed. Only the FMV's turned into 32bit, scene backgrounds are still 16 bit quality.
Yesterday I examined it further and turned out that the game converts the bitmaps to 16 bit, somewhere, and keeps them in that form. The DIB sections it allocates for uploading their content to DX textures (by GDI) are 16bit as well, and even raw 16bit data is copied into them from somewhere else. The game code contains a lot of functions and code snippets that use WORD data type and multiplying by 2 for address computing for bitmap manipulation. So, converting it all to true 32bit is harder task than a simple patching. 🙁

Reply 2203 of 3949, by Expack3

User metadata
Rank Member
Rank
Member

Just tested I-War 2 (Independence War 2: Edge of Chaos) with dgVoodoo2 and a NVIDIA Surround display mode (1x3, 5768x1080). Without dgVoodoo2, the game won't even accept the resolution; with it, it only goes up to 3072 x768. I also think my GPU puked when trying to do it as suddenly, the DVI-I ports on my GTX 970 both died. It was really weird, but as I wasn't using DVI-I except for NVIDIA Surround, I'm not going to try and get it replaced. Below is the full-res screenshot I was able to get before the DVI-I incident:

1x3SurroundIWar2.jpg

Reply 2204 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

Discworld Noir: Works perfectly. Crashes in fullscreen mode, but does that natively too. Resolution forcing seems to have no effect.

Dominant Species: Works, and benefits greatly from resolution forcing (limited to 640x480 by default).

Rising Lands: Works, however movies will only play in windowed mode.

Reply 2205 of 3949, by Peixoto

User metadata
Rank Member
Rank
Member
Dege wrote:
Thanks for the tips! But unfortunately the patching effectively failed. Only the FMV's turned into 32bit, scene backgrounds are […]
Show full quote
Peixoto wrote:

Try cheat engine auto-assembly

mudlord wrote:

Wouldn't it be better to make a new PE section and then add the extra code? Or even use a extra DLL to store patch code?

Thanks for the tips! But unfortunately the patching effectively failed. Only the FMV's turned into 32bit, scene backgrounds are still 16 bit quality.
Yesterday I examined it further and turned out that the game converts the bitmaps to 16 bit, somewhere, and keeps them in that form. The DIB sections it allocates for uploading their content to DX textures (by GDI) are 16bit as well, and even raw 16bit data is copied into them from somewhere else. The game code contains a lot of functions and code snippets that use WORD data type and multiplying by 2 for address computing for bitmap manipulation. So, converting it all to true 32bit is harder task than a simple patching. 🙁

I wrote a patch to modify the textures but found out that, while i can modify the backgounds, the scenarios have other flat objects that can appear in front the 3d objects that i can't modify

If you're willing to do it, i imagine there is not very complicated way you could provide the tools to draw new backgrounds over the default ones with dgVoodoo:

1st there must be way to ignore 3d objects and draw only the scenarios

With only the scenarios drawn, then the guys modding the game could dump the z buffer

With thee the z buffer dumps and the new scenarios textures, then dgVoodoo could draw the new textures over the backbuffer when the game calls endscene, respecting the zbuffer dump

Last edited by Peixoto on 2016-06-21, 14:04. Edited 1 time in total.

Reply 2206 of 3949, by kalash49

User metadata
Rank Newbie
Rank
Newbie
Dege wrote:

Resident Evil 3 is hardwired for 16 bit texture formats. Surfaces can have formats with and without alpha component.
Type of the textures used for FMV playback is also modified to alphaed, so the FMV's are 32 bit too.

In the name of all Resident Evil fans I want to say big thanks to you for this major improvement. The FMV now looks just awesome. It's a sad that backgrounds still stays in 16 bit but 32 bit quality FMV that's a real step forward.
Recently I've suddenly discover much more stable RE3 exe from Xplosiv version with working sound hardware acceleration, and it not crush after several switches from fullscreen to windowed mode by using Alt+Enter like all other RE3 exe. However, it has completely different code, but it still works on the same principals and has all usual limitations. I unable to transfer your recent changes for FMV from old exe to a new (it works, but with glitches) cause it has little bit different code in those parts. Please, use this exe as base in your future attempts if they will be.

Attachments

Reply 2207 of 3949, by daniel_u

User metadata
Rank Member
Rank
Member

Are there any devs/modders that like Splinter Cell 1? Any fans? If yes, can you have a look at why the shadows are not working with shadow buffer setting? This has been a problem for a lot of years. Investigate at least. 😁
Anybody?

PS:
Long shot, but hey, i'm trying.

Reply 2208 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t

Quick post:

I have a new WIP based on the source of 2.52. I'd like to release a 'patch' version, I think some things should have been included in 2.52.

http://dege.fw.hu/temp/dgVoodooWIP24.zip

Citating from the readme:

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

2. Dynamic resolution choosing

A little explanation for this: so far dgVoodoo only allowed static resolution choosing for
overriding application resolutions. If you select a resolution for overriding in the setup,
then no matter what resolution the application wants to use, dgVoodoo always forces the chosen
one. There are two practical problems with it:

- 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 diplayed hugely distorted.

- 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:
a) you don't necessarily know what resolution the app uses
b) you don't necessarily know what the max resolution your display is capable of
c) even if you know both of them, you may have to calculate manually the desired resolution.

(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 that keeps the aspect ratio to be forced.)

So, now you have a new resolution type in the setup, "Maximal". Choose this one if you don't want
to care about the resolution of your display and application but only want to 'max out' the forced
resolution automatically. It chooses resolution in different ways for the available scaling modes:

- Unspecified: since the appearance of the unspecified scaling mode is unspecified, then no reso
forcing takes place

- Centered, Stretched: forced res is the native resolution
- Stretched with kept or 4:3 AR: forced res is the max avaiable based on the native resolution

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

- Glide: when switching from windowed mode to fullscreen then a new forced resolution is chosen by
the wrapper, based on the native res of the display on which the full screen outoput will
appear.
- 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 only rely
on the native res of the output on which DX is initialized (so chaning the output
of a running DX emulated app from the setup is without avail, won't affect the next
resolution calculation).

3. Some bugs I encountered are fixed

- Linear filtering was applied for upscaling the output-image even if the scale ratio was 1.0, fixed
- I did some modification on the CRT-like shader because it didn't look CRT-like at all on a 4K monitor

Reply 2210 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t

New maximized option is fantastic, but in the interest of being difficult, can I ask for one that just does integer scales?

Say I have a game that runs menus at 640x480 and gameplay at 960x600 on a 1920x1200 monitor. Gameplay would look fine, but menus would be distorted with scaling artifacts because it's an uneven scale factor and dgVoodoo2 does nearest scaling. Sure you can force bilinear filtering, but that sometimes results in artifacts of its own. Scaling it to 1280x960 and letting the GPU driver smooth out the rest though? Should look much better.

I realize there are several problems with implementing that (UI complication, relying on GPU scaling, relying on the GPU/monitor actually supporting the integer scales), but just something to think about if you haven't already.

Reply 2212 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
ZellSF wrote:

New maximized option is fantastic, but in the interest of being difficult, can I ask for one that just does integer scales?

Say I have a game that runs menus at 640x480 and gameplay at 960x600 on a 1920x1200 monitor. Gameplay would look fine, but menus would be distorted with scaling artifacts because it's an uneven scale factor and dgVoodoo2 does nearest scaling. Sure you can force bilinear filtering, but that sometimes results in artifacts of its own. Scaling it to 1280x960 and letting the GPU driver smooth out the rest though? Should look much better.

I realize there are several problems with implementing that (UI complication, relying on GPU scaling, relying on the GPU/monitor actually supporting the integer scales), but just something to think about if you haven't already.

What about the following possible resolution options?

- "Max" the same as we have now
- "Max ISF" the same as we have now, ISF stands for integer scaling factor, so it'd choose the max available resolution that can be achieved by integer-factor scaling
- "Max FHD" the max available resolution that fits into FullHD (1920x1080)
- "Max FHD ISF" the max available resolution that fits into FullHD (1920x1080) with integer scale-factor
and maybe
- "Max QHD" the max available resolution that fits into QHD (2560x1440)
- "Max QHD ISF" the max available resolution that fits into QHD (2560x1440) with integer scale-factor

I'd add FHD/QHD ones for cases when a videocard is weak for a given display output. Like for me, I'm facing the fact that the R7 360, that my workplace bought, is not enough for 4K.
So, it'd be useful to restrict the maximum but still keep the automatic resolution choosing.

However, I cannot rely on GPU/monitor scaling for 'Stretched, kept/4:3 AR' scaling modes because the monitor phyisically is in its native resolution in those cases.
So, the game would render into an integer-scaled size buffer (1280x960 in your case), and then the image would be scaled up to fit into the native res by the wrapper (with bilinear filtering).

lowenz wrote:

Cant' run the Configurator (!) on the last Windows 10 Insider Preview Build (Redstone)

Doesn't sounds too good... Crash?

----

I didn't forget about Jane's FA-18 and RE3, I just have little free time.

Reply 2213 of 3949, by Dege

User metadata
Rank l33t
Rank
l33t
Expack3 wrote:

Just tested I-War 2 (Independence War 2: Edge of Chaos) with dgVoodoo2 and a NVIDIA Surround display mode (1x3, 5768x1080). Without dgVoodoo2, the game won't even accept the resolution; with it, it only goes up to 3072 x768. I also think my GPU puked when trying to do it as suddenly, the DVI-I ports on my GTX 970 both died. It was really weird, but as I wasn't using DVI-I except for NVIDIA Surround, I'm not going to try and get it replaced. Below is the full-res screenshot I was able to get before the DVI-I incident:

Uhmm.... it doesn't sound good, too...
So, DVI ports on your card are spoiled? 😳
(Nice screenshot, though.)

Reply 2214 of 3949, by ZellSF

User metadata
Rank l33t
Rank
l33t
Dege wrote:
What about the following possible resolution options? […]
Show full quote
ZellSF wrote:

New maximized option is fantastic, but in the interest of being difficult, can I ask for one that just does integer scales?

Say I have a game that runs menus at 640x480 and gameplay at 960x600 on a 1920x1200 monitor. Gameplay would look fine, but menus would be distorted with scaling artifacts because it's an uneven scale factor and dgVoodoo2 does nearest scaling. Sure you can force bilinear filtering, but that sometimes results in artifacts of its own. Scaling it to 1280x960 and letting the GPU driver smooth out the rest though? Should look much better.

I realize there are several problems with implementing that (UI complication, relying on GPU scaling, relying on the GPU/monitor actually supporting the integer scales), but just something to think about if you haven't already.

What about the following possible resolution options?

- "Max" the same as we have now
- "Max ISF" the same as we have now, ISF stands for integer scaling factor, so it'd choose the max available resolution that can be achieved by integer-factor scaling
- "Max FHD" the max available resolution that fits into FullHD (1920x1080)
- "Max FHD ISF" the max available resolution that fits into FullHD (1920x1080) with integer scale-factor
and maybe
- "Max QHD" the max available resolution that fits into QHD (2560x1440)
- "Max QHD ISF" the max available resolution that fits into QHD (2560x1440) with integer scale-factor

I'd add FHD/QHD ones for cases when a videocard is weak for a given display output. Like for me, I'm facing the fact that the R7 360, that my workplace bought, is not enough for 4K.
So, it'd be useful to restrict the maximum but still keep the automatic resolution choosing.

However, I cannot rely on GPU/monitor scaling for 'Stretched, kept/4:3 AR' scaling modes because the monitor phyisically is in its native resolution in those cases.
So, the game would render into an integer-scaled size buffer (1280x960 in your case), and then the image would be scaled up to fit into the native res by the wrapper (with bilinear filtering).

That sounds much better for image quality on games where dgVoodoo2's aspect ratio correction works. Of course there's still have stuff like Starship Troopers were aspect ratio correction causes mouse issues (resolution forcing by itself doesn't). Though maybe just fixing mouse emulation bugs is better than trying to cover that scenario.

Reply 2217 of 3949, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

Just wanted to add that two Glide games on nGlide's Compatibility list yet to be conquered:

  • Esoteria: The Prequel (demo) - Bugs
  • NFL Blitz - Not Playable

It may require per-game patches in each case.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 2218 of 3949, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
lowenz wrote:
Dege wrote:

Doesn't sounds too good... Crash?

It can't even start! And yes, I removed old config files too.
The screen flashes and the desktop icons disappear for a moment (crash of explorer????)

Nevermind, it was the Smartscreen (and maybe cause I have issues with Win10 modern interface).