VOGONS


dgVoodoo 2 for DirectX 11

Topic actions

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

Reply 3320 of 3952, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
galneon wrote:

It's astonishing the rate and severity in which Windows 10 updates break things. This new system of constant minor version "upgrades" is rattling, coming from years and years of infrequent service packs. It sucks that Microsoft is now a mobile company.

Commandos 2 broken too (or so it seems).

Edit: Commandos 3 is working well.

Reply 3321 of 3952, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
lowenz wrote:
galneon wrote:

It's astonishing the rate and severity in which Windows 10 updates break things. This new system of constant minor version "upgrades" is rattling, coming from years and years of infrequent service packs. It sucks that Microsoft is now a mobile company.

Commandos 2 broken too (or so it seems).

Edit: Commandos 3 is working well.

Solved.

The culprit was Destination Paris 1.44.

So no problem with Win10 😉

Reply 3324 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

What I can see is no matter what application I start through dgVoodoo, all my maximized windows on the desktop becomes invisible for the mouse input after I quit. They are at their place but mouse input goes through them as if they weren't there and a minimize/maximize action is need by clicking their icon on the tray. 😵 😵
I sometimes experienced such a symptom on earlier builds of Windows 10, but it always came after I detached and re-attached one of my monitors and Windows re-arranged desktop windows automatically to the visible displays.

I have a feeling something is really fucked up in FCU around setting full screen display mode through DXGI (I guess the 2 problems have the same root).
Also, for some games, the game window even loses its active state, it can be clearly seen when they are run in windowed mode.
That's why Splinter Cell is minimized by dgVoodoo (there are entries about it in the log from the spec-release build). It can be workarounded by disabling 'Disable Alt-Enter...' in the CPL.
😵

Reply 3326 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

Debugging Splinter Cell, turns out that the WM_ACTIVATE message causing deactivating the window comes from DXGI when dgVoodoo calls Present. I've found this:

5EF6A220 FF 15 F8 40 FA 5E    call        dword ptr [__imp__GetForegroundWindow@0 (5EFA40F8h)]  
5EF6A226 3B 86 C0 00 00 00 cmp eax,dword ptr [esi+0C0h]
5EF6A22C 75 23 jne ATL::CComObject<CDXGILightweightDevice>::Release+0F931h (5EF6A251h)
5EF6A22E FF 15 FC 40 FA 5E call dword ptr [__imp__GetDesktopWindow@0 (5EFA40FCh)] <----
5EF6A234 50 push eax
5EF6A235 FF 15 00 41 FA 5E call dword ptr [__imp__SetForegroundWindow@4 (5EFA4100h)] <---- WTF?? Setting the desktop window as the foreground????? (we run on this path)
5EF6A23B 85 C0 test eax,eax
5EF6A23D 75 12 jne ATL::CComObject<CDXGILightweightDevice>::Release+0F931h (5EF6A251h)
5EF6A23F FF 15 40 20 FA 5E call dword ptr [__imp__GetLastError@0 (5EFA2040h)]
5EF6A245 51 push ecx
5EF6A246 68 10 B9 F3 5E push offset string "SetForegroundWindow failed to sw"... (5EF3B910h) <---- Even there is an error message: "SetForegroundWindow failed to switch away from the app"
5EF6A24B 50 push eax
5EF6A24C E8 6F DB FD FF call CModule::RecordJournalImpl (5EF47DC0h)
5EF6A251 6A 00 push 0
5EF6A253 6A 00 push 0
5EF6A255 8B CE mov ecx,esi
5EF6A257 E8 71 C1 FE FF call CDXGISwapChain::ScenarioEnterOrLeaveFullscreen (5EF563CDh)

I must check it out how it worked on an earlier Windows build. The problem maybe is DXGI doesn't detect the game window as the current foreground one for some reason and it tries to switch away from the application.

Update: Yes, this code sequence is missing from Win10 Creators Update. DXGI::Present seems to have a lot of changes in FCU.
When Splinter Cell starts up then the foreground window is its hidden log window even on older Windows builds, so at least in message handling there is no compatibility break, old DXGI just didn't checked against this.
New one does, so when message pumping starts up at the game menu screen then the deactivate message sent by SetForegroundWindow gets processed immediately and the window gets minimalized.

What really worrying about that code sequence is that child windows cannot be foreground ones, only their top-level parents, as far as I know. So, this means DX11 cannot be used for rendering into dialog child windows anymore.
I hope I'm wrong and Microsoft didn't think it all seriously, I'll check it out when got home.

Reply 3327 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

I debugged IDXGISwapChain::Present with Splinter Cell, on Windows FCU and CU to see the difference.
Every single call to Present checks if the rendering window is occluded by others, and if it is, then it forces the rendering window into windowed mode. That's how it worked so far.

Shortly, the difference:
- FCU now checks if the rendering windows is FULLY occluded, and if it is, then it not only pushes it back to windowed mode but 'switches away' from the application (the code snippet I posted).
- The occlusion detection algorhytm seems to be the same for both CU and FCU but on FCU (without going into the details) it finds that the rendering window occludes ITSELF 😵 , fully occludes, so it switches away from the game. On CU, this never happened.

Unfortunately it's an issue that I cannot workaround or 'fix'. I reported it in an MS developer forum, only they can fix it all.
So, currently I cannot recommend dgVoodoo for Fall Creators Update because this issue affects way more game than Splinter Cell. I may roll back to Creators Update temporarily. 😒

Reply 3328 of 3952, by galneon

User metadata
Rank Newbie
Rank
Newbie

Very worrying. I recommend others who care about legacy compatibility switch to the business update branch and defer "feature" updates for 365 days (the maximum officially allowed). Every new "feature" update breaks stuff and the best we can do is give them time to fix it (or dual boot Windows 7).

This won't affect security updates.

Reply 3330 of 3952, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

If everyone deferred updates then they wouldn't notice issues like this and it would be much harder to identify when things break. The better idea would be to keep a VM (probably not likely unless you are doing pass-thru) or another PC handy that always uses the latest builds of Windows 10 for testing purposes.

DOSBox Compilation Guides
DosBox Feature Request Thread
PC Game Compatibility List
How To Ask Questions The Smart Way
Running DRM games offline

Reply 3331 of 3952, by AWesker

User metadata
Rank Newbie
Rank
Newbie

Is there anyone able to run Enemy Zero?

I noticed there's an old message in this thread refering to the game.

Silanda wrote:

Enemy Zero: Works in DDraw mode, D3D mode is selectable (although it's listed as D3D secondary rather than primary) but doesn't seem to work and reverts to DDraw.

That problem was still in version 2.53, but in the current version 2.54 you are finally able to select the D3D (and in my case it's listed as primary, not secondary, was also in 2.53 anyway), but this game combines CG/FMV and 3D/polygon modes, and while it seems to start fine in the first CG when you awake in your room, when you get out of it and go the hall (which is 3D, in this game all rooms are CG and halls are 3D) then the game crashes. I tried it with both DDraw and D3D modes and it crashes with "uncontrolled win32 exception in EZERO.exe [4320]" message and nothing else, so I don't know what's related to.

Reply 3332 of 3952, by galneon

User metadata
Rank Newbie
Rank
Newbie
DosFreak wrote:

If everyone deferred updates then they wouldn't notice issues like this and it would be much harder to identify when things break. The better idea would be to keep a VM (probably not likely unless you are doing pass-thru) or another PC handy that always uses the latest builds of Windows 10 for testing purposes.

Under no circumstances would everyone defer updates. My suggestion is unlikely to convince even two people to do it. 😜 Developers (like Dege) will typically be on the latest builds anyway, and the most productive testers as well. Deferring feature updates for a year is practical advice considering most people here aren't going to care about the latest "features" like Paint3D or whatever bullshit "XBox features" are being added--it's not going to doom the wrapper if some choose to take it to avoid the hassle.

Reply 3333 of 3952, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
AWesker wrote:
Is there anyone able to run Enemy Zero? […]
Show full quote

Is there anyone able to run Enemy Zero?

I noticed there's an old message in this thread refering to the game.

Silanda wrote:

Enemy Zero: Works in DDraw mode, D3D mode is selectable (although it's listed as D3D secondary rather than primary) but doesn't seem to work and reverts to DDraw.

That problem was still in version 2.53, but in the current version 2.54 you are finally able to select the D3D (and in my case it's listed as primary, not secondary, was also in 2.53 anyway), but this game combines CG/FMV and 3D/polygon modes, and while it seems to start fine in the first CG when you awake in your room, when you get out of it and go the hall (which is 3D, in this game all rooms are CG and halls are 3D) then the game crashes. I tried it with both DDraw and D3D modes and it crashes with "uncontrolled win32 exception in EZERO.exe [4320]" message and nothing else, so I don't know what's related to.

Works fine here. So I can't give much suggestions. Run it in admin mode and try another copy of the game (corrupted game data from both old discs and bad warez copies are common with old games). Resolution forcing also works which is nice since the game offers no resolution options:

EZERO_2017_11_04_13_44_33_102.jpg
Filename
EZERO_2017_11_04_13_44_33_102.jpg
File size
231.98 KiB
Views
463 views
File license
Fair use/fair dealing exception

PCem's ddraw renderer works. Sort of. It crashes a lot, but then again PCem does that for me natively too.

DOSBox says "Could not initialize video: DDraw didn't use SDL surface memory".

Of course neither particularly need dgVoodoo2. I was just trying to find the optimal way to play DOS games and did some experimenting.

Reply 3335 of 3952, by Myloch

User metadata
Rank Member
Rank
Member

I think that in usual Microsoft logic, things like directdraw are long dead and don't care a sxxt about making them run correctly anymore.

"Gamer & collector for passion, I firmly believe in the preservation and the diffusion of old/rare software, against all personal egoisms"

Reply 3336 of 3952, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

I didn't do extensive testing with many games, but according to the MS DXGI code only full screen scenarios are affected, windowed mode should work fine.
And currently I don't have any idea how to workaround this issue, which is related to the proxy window used hidden by MS for fullscreen state, deep in DXGI.
I gave an idea a go, just a quick try, but didn't work.

Reply 3338 of 3952, by willow

User metadata
Rank Member
Rank
Member
Dege wrote:

I didn't do extensive testing with many games, but according to the MS DXGI code only full screen scenarios are affected, windowed mode should work fine.
And currently I don't have any idea how to workaround this issue, which is related to the proxy window used hidden by MS for fullscreen state, deep in DXGI.
I gave an idea a go, just a quick try, but didn't work.

Have you seen this new option in compatibility ?
43cbcd6c4fbf16a68523f2db40a0ba12.png
Maybe check this option solve the problem

With fall creators update, dirext9 games can't turn on gsync in fullscreenmode. When i check this option gsync works in fullscreen mode like before.