Hi all again, sorry for intensive inactivity, but it isn't going to change much in the future too.
I would like to share my latest experiences. I read a lot of rumours, complains about Vista's ntvdm in several forums. Thanks to those I thought MS have let ntvdm get screwed up totally in Vista thinking it's not so important as Dos compatibility will break sooner or later for good and all, because of 64 bit environments. So, why don't be it sooner?
Yesterday I decided to install Vista 32 bit at home too. I also remembered I developed a glide wrapper a long time ago, so let's try it with Dos programs, namely with TR1. I installed VDMSound, but when I tried to launch it in dos prompt with 'dosdrv' it complained that it can't find 'vddloader.dll'. Hmm... My dgVesa did the same, saying 'glide2x.dll not found'. Then I thought, yes MS had dropped compatibility, since as I debugged my own code in dgVesa, everything was ok on the application side, but ntvdm simply didn't allow to load any VDD. But searching on some dev forums I read that ntvdm allows VDDs only from Windows\System32. Ok, then let's copy 'vddloader.dll' from ProgFiles\VDMSound and 'glide2x.dll' there. And woah, vdmsound and dgvesa began to work. Other important ntvdm issue is that it can't go into full screen in any way. Just for a simple 'Alt-Enter' in text mode it bombed me messages like 'this system does'nt support full screen mode'. And all other graphic modes from standard VGA modes up to VESA modes simply can't be emulated. Yes, searching a little bit again, I realized that Vista's new Windows Display Driver Model (which is needed for Aero lookandfeel and DWM) simply doesn't support any full screen functionality, except via DirectX of course. In XP, ntvdm catches all int10 bios calls and forwards them to the video driver. In Vista, there is no any thing to forward them to, so it just pops up that annoying message box. But using dgVesa, which catches int10 calls too and redirects it to DirectX, it works. I tried it with some old Dos-VESA prgs, and they worked, even in full screen, just like as if I run them under XP. The point of all that is I was managed to run TR1 via ntvdm, and it worked as usual under XP, see my screenshot (tried only dgVoodoo 1.50b). One thing, sapucdex didn't work, dunno why, maybe the volume on my CD-drive was set to zero or sg like that, hadn't time to check it out. Third issue related to vesa emu: my videodriver doesn't allow any resolution below 640x480 in DirectX, so dgVesa cannot emulate standard 320x200 VGA in fullscreen. I got a silent fail, the prg run but nothing could be seen. 😀
So doing some improvements dgVoodoo could be made Vista-compliant:
1. Glide2x.dll should be always copied to Windows\System32, and dgvoodoosetup should take that location into account too (now it searches in the current dir, and Windows\ folder). Don't know if this behavior of ntvdm could be controlled or disabled in Vista, but would be nice to.
2. dgVesa should be always used since there is no other way (ok, any other vesa emulator like SolVBE will make it 😁 😁 ), improving it by detecting supported resolutions in full screen. If a VGA/VESA-resolution is not supported in DX, it could choose another and scale the image. Also, it could catch all int10 graphic mode settings calls optionally to avoid annoying message boxes. (Now you can ignore them and let the prg go).