c64z80 wrote:This one is just for curiosity, as I want to take a closer look about how this wonderful program works :) […]
Show full quote
This one is just for curiosity, as I want to take a closer look about how this wonderful program works 😀
I've been trying to find out what the word "wrapper" means and I do not find anything more than vague answers. Even the FAQ that comes with the program does not have specifics. Either that, or the information is there and I will admit I am just too thick to understand it :p
Does it translate old Direct3d 5/6/7/8 calls to modern 10/11 ones, so the program runs as DirectX 11? Or does it just jump in and help where it sees your graphics card struggling with the old calls?
Or does it take the program, emulate the entirety of it and pass it along to your computer as a DirectX 10/11 program?
The author of dgVoodoo2 explains how it works
http://dege.freeweb.hu/dgVoodoo2/Readme.html
The first popularly used graphics wrapper on Windows was for wrapping Glide (3DFX Voodoo API) to OpenGL or Direct3D, and was largely driven by the first N64 emulator (UltraHLE) which was written exclusively for the Glide API. Subsequent approaches are much the same idea, drop a DLL file into the Windows directory to intercept whatever API the system doesn't natively have, and translate it to one that does. The same 3DFX wrappers found new life in getting 3DFX Windows games to work (of which games like Ultima 9 and Kings Quest 8 were early Win9x games that have Glide API's.)
The API's it currently can wrap are:
- Glide 2.11, Glide 2.45, Glide 3.1 and Glide 3.1 Napalm
- DirectX 1-7 (all versions of Dir […]
Show full quote
The API's it currently can wrap are:
- Glide 2.11, Glide 2.45, Glide 3.1 and Glide 3.1 Napalm
- DirectX 1-7 (all versions of DirectDraw and Direct3D up to version 7)
- Direct3D 8.1
The Glide 2.x and 3.x API's are important because that hardware is extinct.
So you might wonder why would you need to emulate Directdraw/Direct3D 1-8.1 if Windows provides this backwards compatibility already? Well the answer to that is "because I want to run it in a window" or "I want to run it aspect-ratio correct on my wide screen" or a combination of the two. Unless the game has it's own 32-bit color windowed mode, getting anything else to work would require changing the screen resolution and the game having exclusive use of the video adapter. It should be readily apparent why that doesn't work correctly, or at all on Windows Vista and later.
When you try to play a game that uses 8-bit color on Windows Vista or later, it tries to change the desktop resolution and color depth, or sometimes won't even run if the desktop isn't already set to 640x480x256 colors. 800x600 is the smallest user-selectable resolution in Windows 7 and later. Color depth hasn't been selectable since Windows XP.
Try running the original Starcraft game on Windows versions greater than XP, it will be not be usable. Which leads me to the second point that can't be fixed by dgvoodoo2 alone. Since Windows Vista, the original Windows 3.0-style GUI (MFC) has been replaced. So if your game uses Windows GUI widgets (eg Outpost 2), they don't appear in the right place, or the wrong color (fortunately there aren't too many games that do this.) If a game uses MCI (eg redbook audio, midi playback pre-directmusic) or some video codec that was only supported by VFW (eg for FMV) then dgvoodoo2 doesn't fix this either.
There are multiple games that work on XP and later without any wrapper, but the experience is sub-optimal if they were designed for 640x480x256 colors, since if it can't change the desktop, the palette is screwed up.