VOGONS


Reply 20 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

Strange. I don't have an idea at the moment. This is what I get, and I can't see any difference compared to dgv1:

Attachments

  • mech2glide.png
    Filename
    mech2glide.png
    File size
    203.09 KiB
    Views
    1588 views
    File license
    Public domain

Reply 21 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2022-05-25, 17:46:

Strange. I don't have an idea at the moment. This is what I get, and I can't see any difference compared to dgv1:

This is the correct visuals as seen with dgv1 on my end as well.
Maybe logs can help. Is there a debug build available?

previously known as Discrete_BOB_058

Reply 22 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t

I did quite a few test and the results are same on Windows 7 as well. On Win98 and Voodoo 1, this game doesn't run for some reason so I have only newer platforms to test.

previously known as Discrete_BOB_058

Reply 23 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t

The screenshots below depict how the game looks in different places:

dgVoodoo1 + dgVoodoo2

HUD Loading

file.php?mode=view&id=138165

HUD Loaded

file.php?mode=view&id=138166

Pause Menu

file.php?mode=view&id=138167

Attachments

previously known as Discrete_BOB_058

Reply 24 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t

And here's how the game looks in the new Glide.dll with or without dgVoodoo2 DirectX:

HUD Loading

file.php?mode=view&id=138168

HUD Loaded

file.php?mode=view&id=138169

Pause Menu

file.php?mode=view&id=138170

Attachments

previously known as Discrete_BOB_058

Reply 25 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

Ok, but I still don't have an idea why it is. What about different API's? Do you get the same with D3D11 WARP, D3D11/12?

Edit: the dbg version wouldn't help here because there's no much to report in Glide. Only activating/initialization/deactivation stuff.

Reply 26 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t

Okay I got some hints, the game loads the HUD when Force Emulate True PCI Access is disabled, but it presents a flickering HUD:

Attachments

previously known as Discrete_BOB_058

Reply 27 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

Yes, that's the expected behavior with disabled PCI access. That's why I don't understand why the enabled case does not work for you.

Could you plz try it with output API set to d3d11warp, just to rule out the possibility of any driver problem?
Also, if there is ddraw.dll in the game folder, delete it to avoid mixing it with Glide.

Reply 28 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2022-05-28, 10:39:

Could you plz try it with output API set to d3d11warp, just to rule out the possibility of any driver problem?
Also, if there is ddraw.dll in the game folder, delete it to avoid mixing it with Glide.

Yes, I just deleted the ddraw.dll and d3dimm.dll files and tested with D3D11WARP and the results are the same, the below-left HUD stops loading midway as I explained. I also tested with an older Nvidia driver and the result is same as well.

previously known as Discrete_BOB_058

Reply 30 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

I'm still not having an idea. We're using the same game version, the same wrapper version, etc, so I don't yet understand what the difference is.
I'll check it out on other machines, maybe only my computer is 'special' in some aspect.

Reply 31 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2022-06-05, 08:04:

I'm still not having an idea. We're using the same game version, the same wrapper version, etc, so I don't yet understand what the difference is.
I'll check it out on other machines, maybe only my computer is 'special' in some aspect.

Sure that'll be good 😃

previously known as Discrete_BOB_058

Reply 32 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

I tried it on other machines but it worked.
I have only one idea: emulating PCI access relies on catching certain exceptions. I don't know DxWnd immersively but doesn't it have an option to absorb exceptions?
I installed Mech2, along with a 'clean' DxWnd installation (2.05.83.fx4) and only imported the MechWarrior 2 31st Century Combat.dxw from the installation guide without changing any option afterwards.

Reply 33 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2022-06-13, 14:37:

I tried it on other machines but it worked.
I have only one idea: emulating PCI access relies on catching certain exceptions. I don't know DxWnd immersively but doesn't it have an option to absorb exceptions?
I installed Mech2, along with a 'clean' DxWnd installation (2.05.83.fx4) and only imported the MechWarrior 2 31st Century Combat.dxw from the installation guide without changing any option afterwards.

I tried the new package and it didn't change anything. Well I think I will just do a driver resinstallation now and see if anything better happens. I forgot to tell there's a game crash when using only dgVoodoo2 Glide, on exit but that doesn't happen with dgVoodoo1

previously known as Discrete_BOB_058

Reply 34 of 59, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
BEEN_Nath_58 wrote on 2022-06-16, 17:14:
Dege wrote on 2022-06-13, 14:37:

I tried it on other machines but it worked.
I have only one idea: emulating PCI access relies on catching certain exceptions. I don't know DxWnd immersively but doesn't it have an option to absorb exceptions?
I installed Mech2, along with a 'clean' DxWnd installation (2.05.83.fx4) and only imported the MechWarrior 2 31st Century Combat.dxw from the installation guide without changing any option afterwards.

I tried the new package and it didn't change anything. Well I think I will just do a driver resinstallation now and see if anything better happens. I forgot to tell there's a game crash when using only dgVoodoo2 Glide, on exit but that doesn't happen with dgVoodoo1

Okay so after a driver update, nothing changed. Well I think I have to pause here until a Windows reinstall, something must have gone wrong intensively to emulate such behaviour. Maybe the crash is also related to it.

Also you asked about the catching of exceptions. Yes, DxWnd does it, and is also enabled for the game, even for your configuration, to ignore the exceptions caused by the WINMM on Windows 8+ platforms. DxWnd, as far as I know, shouldn't be catching Glide exceptions as it handles DirectDraw/GDI/OpenGL mostly.

previously known as Discrete_BOB_058

Reply 36 of 59, by ghotik2002

User metadata
Rank Newbie
Rank
Newbie

Oh, I see ....
About guard page exceptions (code 0x80000001) DxWnd does not do anything special. So, there are two cases:
a) with DxWnd handle exception turned off, it doesnt intercept the exception. Hopefully someone else should do it?
b) with DxWnd handle exception turned on, it treats the event as harmful, so it jumps over the offending assembly and continues the execution.

Probably, the second case could give some troubles because this way the guard page exception will be masked so preventing the allocation of a further block of memory for the stack.
Possible variations for DxWnd handling could be the following ones:
1) consider guard page exceptions as welcomed and let them pass to the exception layers above
2) maybe as in case 1) but only when some dedicated option is enabled
3) implement a guard page handling inside the VirtualAlloc wrapper, repeating the operation after the stack is increased?
4) anything else?

I'm open to suggestions.

Reply 37 of 59, by Dege

User metadata
Rank l33t
Rank
l33t

How to handle guard page exceptions when the game is needing them is a question... I don't know if it is a problem in practice, so that, is there any game that needs guard page exceptions catched and absorbed while they also neeeded for a third party stuff like dgVoodoo.

But, I still understand the basic case: GP excpetions uncatched and defective HUD in MW2 through dgVoodoo.
Maybe Gho, could you try this game yourself plz, to let us have a 3rd use case?

Reply 38 of 59, by ghotik2002

User metadata
Rank Newbie
Rank
Newbie

Ok, if I understand correctly the test case would be this one:
Mechwarrior 2
dgVoodoo2 DirectDraw wrappers
DxWnd with handle exception flag but (experimental custom feature) leaving the guard page exception 0x80000001 uncaught

The hope would be that dgVoodoo2 + some handle exception but not the guard page that must pass, all this would make MW2 playable.
It is a dream, but it's worth trying. I'll give BEEN_Nath_58 a custom DxWnd release.