VOGONS


Tech demos - general discussion

Topic actions

First post, by CoolGamer

User metadata
Rank Member
Rank
Member

I tested the latest dgVoodoo2 WIP31 with DX7 and DX8 tech demos from Nvidia. Results are listed below. These are all of the DX7 and DX8 Nvidia tech demos that I could find. Let me know if there are any other ones.

Gothic Chapel (DX7)
http://www.nvidia.com/object/demo_gothic.html

Demo does not run on dgVoodoo WIP31. This demo has a graphics setup that detects dgVoodoo wrapper and prints "SetupInfo.txt" file that contains all detected features of the dgVoodoo graphics card. I think the features listed in "SetupInfo.txt" file can be used for troubleshooting. You can see if all features are detected or not.

Cave (DX7)
http://www.nvidia.com/object/demo_cave.html

It works. Fast video memory access causes problems (makes it look different/darker and splash screens disappear). It also prints setupinfo.txt file.

Creature (DX7)
http://www.nvidia.com/coolstuff/demos#!/geforce-6/creature

Starts and freezes.

Crystal Ball (DX7)
http://www.nvidia.com/coolstuff/demos#!/gefor … -6/crystal-ball

It starts and runs but it does not look right. The glitter of the crystal ball is missing. Swap button does not change scenes within the crystall ball. Shadows on the statues sometimes flicker.

Toy Soldier (DX7)
http://www.nvidia.com/coolstuff/demos#!/gefor … e-6/toy-soldier

Starts, runs for a short time and freezes. It also does not look right (too dark, ground texture dark).

Chameleon (DX8)
http://www.nvidia.com/object/demo_chameleon.html

Directx version works with dgVoodoo. Also has an OpenGL exe in case you want to compare the looks.

ChameleonMark (DX8)
http://www.nvidia.com/coolstuff/demos#!/gefor … x/chameleonmark

Works. This demo allows you to benchmark dgVoodoo's FPS performance for different shaders.

As far as I know, the following Nvidia tech demos are OpenGL only: Blobby Dancer, Nalu, Timbury, Clear Sailing, Vulcan, Toys, Dawn, Ogre, Last Chance Gas, Time Machine, Dusk, Dusk Ultra, Squid, Tidepool, Bugs, Zoltar the Magnificient, Wolfman, Grove, Grass, Small Pond, Principles of Shading, Bubble, Lightning, Twister, Grace, Blobby Dinosaur, Bumpy Shiny Patch, Geforce3 Hair, Geforce3 Inferno, Geforce4MX Chameleon.

Edit:
I found 5 more Nvidia DX7 demos.

Reflection Pool (DX7)
http://web.archive.org/web/20031008201047/htt … /demo_pool.html
http://web.archive.org/web/20031011115625/htt … /tlwater104.zip
http://akamai-www.nvidia.de/attach/7811

It works, but there is a huge performance hit. FPS goes from native 350fps to 75FPS via dgVoodoo. Turning fast video memory access decreases the fps further to 25fps!! It is such as small demo (300KB only). Usage/control instructions are in the readme file. I added a link for the video as well if you want to compare. It was difficult to find download links for the demo and its video. Add it to your collection before its taken down.

Geforce 256 Launch Demos: Wanda, Scorpion, Firetruck, Boxster (DX7)
http://www.pcgameshardware.de/Grafikkarten-Gr … s-cards-683482/

These demos start, but they do not look right. Scenes are too dark. Also navigation/settings buttons do not display on screen. These are the first demos of the first Geforce card. They all come in one single archive file.

Last edited by CoolGamer on 2017-03-05, 16:51. Edited 2 times in total.

Reply 1 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

Final Reality Directx 5 Benchmarking Software
https://www.youtube.com/watch?v=E7uvTCN_ylA

This is a benchmarking tool (similar to 3dmark) for Directx 5!! It does not work with dgVoodoo WIP31. It prints out verbose.txt file that contains the following error:
PROGRAM ERROR: allocateScreenBuffer: clipper->SetHWnd DDERR_INVALIDCLIPLIST

In the installation folder there is a file named grphmfc.dll that calls dgVoodoo's ddraw.dll.

It works fine natively (without dgvoodoo) on my Windows 7 Ultimate 64 bit with Geforce GT230m. I am guessing that you can fix the error very easily. This benchmarking tool should help with full dx5 compliance and performance optimization.

Files:
ftp://ftp.scene.org/pub/demos/groups/remedy/fr101.exe
http://toastytech.com/files/Is3Engine.zip

Instructions:
1)Right click fr101.exe and extract using 7zip or Winrar.
2)delete setup.exe and replace it with setup32.exe from the Is3Engine.zip. This is the 32bit installer for InstallShield3.
3) Just run setup32.exe and install to C:\Games\FinalReality

It will run natively on your machine without any problems.

Reply 3 of 103, by UCyborg

User metadata
Rank Member
Rank
Member

Nice find! So this must be based on the earliest iteration of MAX-FX engine? Subsequent 3D Mark versions up-to and including 2001 SE use MAX-FX. And of-course, classic Max Payne games!

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 4 of 103, by UCyborg

User metadata
Rank Member
Rank
Member

My system only loads system ddraw.dll when I try to run Final Reality, doesn't occur with other games. This happens on both Windows 8.1 and Windows 10, Windows 7 loads dgVoodoo's DDraw.dll. By the time code reaches LoadLibrary("ddraw.dll"), system ddraw.dll is already loaded. Looks like it's caused by this, which happens before game's call to LoadLibrary:

FRCOM.png
Filename
FRCOM.png
File size
116.81 KiB
Views
5663 views
File license
Fair use/fair dealing exception
FRCOM2.png
Filename
FRCOM2.png
File size
146.51 KiB
Views
5661 views
File license
Fair use/fair dealing exception

Maybe dgVoodoo would need to hook COM interfaces somehow? I know Creative ALchemy does something that make games that request DirectSound interface via CoCreateInstance pick-up on dsound.dll in their own folder instead of system one. Though I don't think the magic is in their dsound.dll, but rather in ALchemy.exe, which probably changes something in registry when you run it for the first time. Because if you just drop dsound.dll in a game's folder on fresh Windows installation, it doesn't work for those that use COM.

Last edited by UCyborg on 2017-03-08, 22:19. Edited 1 time in total.
Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 5 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

UCyborg, thanks for getting the ball rolling on Final Reality fixes. Its file and folder structure looks similar to 3DMark99. I am guessing that it is an earlier version of the same engine. Based on your explanations, it seems like it needs a patch similar to the one you created for 3DMark99 to get it working with dgVoodoo.

Reply 6 of 103, by UCyborg

User metadata
Rank Member
Rank
Member

I believe this issue must be solved by dgVoodoo. There are 2 ways to initialize DirectDraw, by linking your program to ddraw.dll and calling DirectDrawCreate and going from there or bypassing ddraw.dll entirely and accquiring DirectDraw interface pointer using COM. The following code demonstrates the issue, it must be linked with dxguid.lib to compile:

#include <Windows.h>
#include <ddraw.h>

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
IDirectDraw7 *ddraw7;
// init COM
CoInitialize(NULL);
// accquire pointer to DirectDraw7 interface, this loads system ddraw.dll instead of dgVoodoo's
CoCreateInstance(&CLSID_DirectDraw7, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectDraw7, &ddraw7);
// init newly accquired DirectDraw7 object
IDirectDraw7_Initialize(ddraw7, NULL);
//
// do something useful with DirectDraw here
//
// release DirectDraw object
IDirectDraw7_Release(ddraw7);
// shutdown COM
CoUninitialize();
return 0;
}

Well, bypassing ddraw.dll entirely is probably not the correct way to put it, but this way it is possible to write program whose final executable file doesn't contain any references to ddraw.dll.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 7 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

Matrox G400 Tech Demo (Directx 6)
https://www.youtube.com/watch?v=P_YiZzi9PkU

Sadly, it does not work with dgVoodoo WIP31. It starts and shows a black screen with dgVoodoo logo, first second of the music plays and it crashes.

This is the only Matrox demo that has a built-in option that allows it to work with all Directx 6 compatible cards. Youtube video was shot on PNY GeForce4 Ti 4600 AGP 128 MB DDR. Environmental bump mapping also worked.

Great demo to debug Directx 6 and Directx Environmental Bump Mapping (EMBM) features of dgVoodoo.

Files:
http://bit.ly/TE4uwL
http://toastytech.com/files/Is3Engine.zip

Instructions:
1) Extract MatroxG400techdemo.zip
2) delete setup.exe and replace it with setup32.exe from the Is3Engine.zip. This is the 32bit installer for InstallShield3.
3) Just run setup32.exe and install to C:\Games\MatroxG400
4) Go to installation folder, edit matrox.cfg and add the following line to the end of the file:
i_promise_i_will_go_buy_a_matrox_g400

Reply 8 of 103, by Dege

User metadata
Rank l33t
Rank
l33t

Finally I had a free hour, I could play with the Matrox demo a little:

The demo tries to create textures from some font but that code is either buggy or modern Windows doesn't have the required font or sg because the creator code massively overwrites memory, that's why the demo crashes.
I couldn't make it pass through that part without modifying the memory allocation (patching the exe) to allocate a lot larger chunk. Encountered an other bug in the demo that fails to restore stack pointer correctly from a DD callback but that can probably be survived.
Even with those patching on, I still had to enable 'Fault tolerant heap' compat setting otherwise the demo crashed when entering demo mode.
Also, intervention on dgVoodoo side was needed because the demo needs a texture format for the font textures that weren't available via DX<=7.

After that however, it run. Everything worked, except displaying info when pressing Tab during the demo.
All characters are just white rects because of the font creation problem.

Matrox_Tech1.png
Matrox_Tech2.png

I'll respond to other cumulated posts.

Reply 9 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

Dege that's great news. Thanks. Does Environmental Bump Mapping work in Matrox G400 Demo via dgVoodoo?

I have all the font files (*.fon and *.ttf files) from Windows XP SP3 CD's i386 folder and Windows 98 SE CD's cab files. Is there a way I can identify the font that Matrox Demo is trying to find? Maybe a trial and error method where I place things into Windows\Fonts folder? This way we can fully restore the DEMO.

Edit: Check your PM. 😀
Edit2: I read in the description of the youtube video that Environmental Bump Mupping can be turned on/off using F6 key.

Last edited by CoolGamer on 2017-03-09, 14:01. Edited 1 time in total.

Reply 10 of 103, by Dege

User metadata
Rank l33t
Rank
l33t
UCyborg wrote:
I believe this issue must be solved by dgVoodoo. There are 2 ways to initialize DirectDraw, by linking your program to ddraw.dll […]
Show full quote

I believe this issue must be solved by dgVoodoo. There are 2 ways to initialize DirectDraw, by linking your program to ddraw.dll and calling DirectDrawCreate and going from there or bypassing ddraw.dll entirely and accquiring DirectDraw interface pointer using COM. The following code demonstrates the issue, it must be linked with dxguid.lib to compile:

#include <Windows.h>
#include <ddraw.h>

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
IDirectDraw7 *ddraw7;
// init COM
CoInitialize(NULL);
// accquire pointer to DirectDraw7 interface, this loads system ddraw.dll instead of dgVoodoo's
CoCreateInstance(&CLSID_DirectDraw7, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectDraw7, &ddraw7);
// init newly accquired DirectDraw7 object
IDirectDraw7_Initialize(ddraw7, NULL);
//
// do something useful with DirectDraw here
//
// release DirectDraw object
IDirectDraw7_Release(ddraw7);
// shutdown COM
CoUninitialize();
return 0;
}

Well, bypassing ddraw.dll entirely is probably not the correct way to put it, but this way it is possible to write program whose final executable file doesn't contain any references to ddraw.dll.

dgVoodoo DDraw can be initialized via pure OLE COM. I added this capability because some games choose this way instead of DirectDrawCreate.
The problem could be that some other dll like quartz.dll (DirectShow) loads DDraw.dll using absolut (system) path before loading DDraw.dll itself directly from the app because once DDraw.dll is loaded then neither CoCreateInstance nor LoadLibrary will load another instance, they just use/refer to the loaded one.
There must be some difference between Win7 and Win8/10 because I experienced the same behavior you wrote. That's why I added loading DDraw.dll from D3D8.dll (when D3D8 initializes) to the latest WIP versions, to (try to) prevent other system components to "forego".

Reply 11 of 103, by UCyborg

User metadata
Rank Member
Rank
Member
Dege wrote:

dgVoodoo DDraw can be initialized via pure OLE COM. I added this capability because some games choose this way instead of DirectDrawCreate.
The problem could be that some other dll like quartz.dll (DirectShow) loads DDraw.dll using absolut (system) path before loading DDraw.dll itself directly from the app because once DDraw.dll is loaded then neither CoCreateInstance nor LoadLibrary will load another instance, they just use/refer to the loaded one.
There must be some difference between Win7 and Win8/10 because I experienced the same behavior you wrote. That's why I added loading DDraw.dll from D3D8.dll (when D3D8 initializes) to the latest WIP versions, to (try to) prevent other system components to "forego".

Looks like they changed values under HKEY_CLASSES_ROOT\CLSID\{GUID}\InprocServer32 to absolute paths from Windows 8 onward. Creative ALchemy makes changes here for its dsound.dll to work. There are 3 references to ddraw.dll. And another 3 under HKEY_CLASSES_ROOT\WOW6432Node\CLSID. I just changed everything from %SystemRoot%\system32\ddraw.dll to ddraw.dll

The only catch is, you need to make changes under TrustedInstaller account. I used this plugin for Process Hacker to be able to launch regedit as TrustedInstaller.

PS: ddraw.dll was loaded by combase.dll. quartz.dll probably also loads it indirectly via CoCreateInstance call. The code I posted surely never loads quartz.dll, indirectly or not.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 12 of 103, by Dege

User metadata
Rank l33t
Rank
l33t
CoolGamer wrote:
Dege that's great news. Thanks. Does Environmental Bump Mapping work in Matrox G400 Demo via dgVoodoo? […]
Show full quote

Dege that's great news. Thanks. Does Environmental Bump Mapping work in Matrox G400 Demo via dgVoodoo?

I have all the font files (*.fon and *.ttf files) from Windows XP SP3 CD's i386 folder and Windows 98 SE CD's cab files. Is there a way I can identify the font that Matrox Demo is trying to find? Maybe a trial and error method where I place things into Windows\Fonts folder? This way we can fully restore the DEMO.

Edit: Check your PM. 😀
Edit2: I read in the description of the youtube video that Environmental Bump Mupping can be turned on/off using F6 key.

Yes, but that's applied only to the water. If it's off then water reflection is rendered without waves. 😀
Meanwhile I found that the demo still crashes at startup. If it's launched from the debugger, or even having the exe as a solution opened in the debugger then it's ok. 😕 😕

lowenz wrote:

So in Commandos 3 how we can achieve that smooth result for the HUD when the resolution is forced to 1440x1080? Forcing bilinear/trilinear in dgVoodoo2 or we must live with the actual grained HUD?

Well, I tried forced bilinear texture filtering for Commandos 3 and the HUD along with the background got filtered. 😀
I was thinking further about bilinear blit stretch: as I said, DX8 has only a single rect-copying function as a 2D operation, but it can become stretching in dgVoodoo if resolution is forced.
Checked my code, and stretching is always done with bilinear filtering in that case, maybe option 'bilinear blit stretch' could be tied to that too.
But it doesn't mean it'd necessarily affect each game, it's dependent on the game rendering method.

Nucleoprotein wrote:

@Dege
I think you have missed my post (Re: WIP versions)

Indeed, sorry. You're right, the path is not automatically added to the list. I'll change it.

UCyborg wrote:
Looks like they changed values under HKEY_CLASSES_ROOT\CLSID\{GUID}\InprocServer32 to absolute paths from Windows 8 onward. Crea […]
Show full quote
Dege wrote:

dgVoodoo DDraw can be initialized via pure OLE COM. I added this capability because some games choose this way instead of DirectDrawCreate.
The problem could be that some other dll like quartz.dll (DirectShow) loads DDraw.dll using absolut (system) path before loading DDraw.dll itself directly from the app because once DDraw.dll is loaded then neither CoCreateInstance nor LoadLibrary will load another instance, they just use/refer to the loaded one.
There must be some difference between Win7 and Win8/10 because I experienced the same behavior you wrote. That's why I added loading DDraw.dll from D3D8.dll (when D3D8 initializes) to the latest WIP versions, to (try to) prevent other system components to "forego".

Looks like they changed values under HKEY_CLASSES_ROOT\CLSID\{GUID}\InprocServer32 to absolute paths from Windows 8 onward. Creative ALchemy makes changes here for its dsound.dll to work. There are 3 references to ddraw.dll. And another 3 under HKEY_CLASSES_ROOT\WOW6432Node\CLSID. I just changed everything from %SystemRoot%\system32\ddraw.dll to ddraw.dll

The only catch is, you need to make changes under TrustedInstaller account. I used this plugin for Process Hacker to be able to launch regedit as TrustedInstaller.

PS: ddraw.dll was loaded by combase.dll. quartz.dll probably also loads it indirectly via CoCreateInstance call. The code I posted surely never loads quartz.dll, indirectly or not.

Very nice find!! If those keys really can be modified safely, I'll try it.
BTW, Final Reality isn't DllMain too? I remember there was some kind of such a problem back when I tried it, but I'm not sure.

Reply 13 of 103, by UCyborg

User metadata
Rank Member
Rank
Member
Dege wrote:

Very nice find!! If those keys really can be modified safely, I'll try it.

I think it would only be dangerous if you ended up with malicious ddraw.dll in game's directory! 😁

Dege wrote:

BTW, Final Reality isn't DllMain too? I remember there was some kind of such a problem back when I tried it, but I'm not sure.

Nope, guess what the issue is? It calls IDirectDrawClipper::SetHWnd with NULL hWnd few times before even the splash screen shows up. Obviously it doesn't even have any windows by then. The only practical difference, your implementation returns DDERR_INVALIDCLIPLIST, while Microsoft's returns DD_OK. 😕

Perhaps dgVoodoo should do the same. In the meantime, I'm attaching grphmfc.dll that just ignores the return value of said function.

Attachments

  • Filename
    grphmfc.zip
    File size
    46.88 KiB
    Downloads
    151 downloads
    File license
    Fair use/fair dealing exception
Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 14 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

When I used UCyborg's grphmfc.dll fix with dgVoodoo on Final Reality, I noticed that the demo momentarily drops back to desktop when switching from 2D to 3D scenes. This does not happen when I natively run Final Reality with its original DLL. I think dgVoodoo should follow the original directx behavior, as UCyborg suggested, to prevent this glitch.

This is why I like these demos. They reveal a lot of conformance issues that we don't notice. 😀

Please share the patched Matrox G400 demo exe with us when you get it to work.

Did you have a chance to look at the errors in DirectX 6.1 SDK Samples (posted by UCyborg) and the errors in Nvidia DX7 Tech Demos (posted by me)?

I found some more DX7/DX8 developer demos from Nvidia included in their Nvidia SDK 5.2.1. Links are below:
http://bit.ly/2lNX0dM
http://web.archive.org/web/20030611140202/htt … directx_effects

Nvidia SDK 5.2.1 includes the Nvidia Effects Browser that contains a lot of Directx shader effects. Go to "view" and uncheck OpenGL to only display DirectX Demos. Most of these directx effects do work with dgVoodoo. There are problems with some of the effects such as dynamic hair/fur/grass effects, volume texture effects, hardware shadow maps, shadow maps, per pixel lighting, etc.

Since the source codes of the effects are also displayed, it should be easy to debug them.

Reply 15 of 103, by UCyborg

User metadata
Rank Member
Rank
Member
CoolGamer wrote:

I noticed that the demo momentarily drops back to desktop when switching from 2D to 3D scenes.

It happens both natively and via dgVoodoo on my end. I'm guessing it makes another video mode switch.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 16 of 103, by Dege

User metadata
Rank l33t
Rank
l33t
UCyborg wrote:
I think it would only be dangerous if you ended up with malicious ddraw.dll in game's directory! :D […]
Show full quote
Dege wrote:

Very nice find!! If those keys really can be modified safely, I'll try it.

I think it would only be dangerous if you ended up with malicious ddraw.dll in game's directory! 😁

Dege wrote:

BTW, Final Reality isn't DllMain too? I remember there was some kind of such a problem back when I tried it, but I'm not sure.

Nope, guess what the issue is? It calls IDirectDrawClipper::SetHWnd with NULL hWnd few times before even the splash screen shows up. Obviously it doesn't even have any windows by then. The only practical difference, your implementation returns DDERR_INVALIDCLIPLIST, while Microsoft's returns DD_OK. 😕

Perhaps dgVoodoo should do the same. In the meantime, I'm attaching grphmfc.dll that just ignores the return value of said function.

Oh, OK. So, as CoolGamer also said.
I just don't understand why I didn't fixed it when I first tried FR with dgVoodoo. It was on Win7, so...
Probably I didn't notice verbose.txt. 😁
Thx for the modified dll. Watching Final Reality again invoked memories from my childhood. We looked at this demo by jaw being dropped to the floor, especially at the ending part. 19-20 years ago. 😁

CoolGamer wrote:
When I used UCyborg's grphmfc.dll fix with dgVoodoo on Final Reality, I noticed that the demo momentarily drops back to desktop […]
Show full quote

When I used UCyborg's grphmfc.dll fix with dgVoodoo on Final Reality, I noticed that the demo momentarily drops back to desktop when switching from 2D to 3D scenes. This does not happen when I natively run Final Reality with its original DLL. I think dgVoodoo should follow the original directx behavior, as UCyborg suggested, to prevent this glitch.

This is why I like these demos. They reveal a lot of conformance issues that we don't notice. 😀

Please share the patched Matrox G400 demo exe with us when you get it to work.

Did you have a chance to look at the errors in DirectX 6.1 SDK Samples (posted by UCyborg) and the errors in Nvidia DX7 Tech Demos (posted by me)?

I found some more DX7/DX8 developer demos from Nvidia included in their Nvidia SDK 5.2.1. Links are below:
http://bit.ly/2lNX0dM
http://web.archive.org/web/20030611140202/htt … directx_effects

Nvidia SDK 5.2.1 includes the Nvidia Effects Browser that contains a lot of Directx shader effects. Go to "view" and uncheck OpenGL to only display DirectX Demos. Most of these directx effects do work with dgVoodoo. There are problems with some of the effects such as dynamic hair/fur/grass effects, volume texture effects, hardware shadow maps, shadow maps, per pixel lighting, etc.

Since the source codes of the effects are also displayed, it should be easy to debug them.

That nVidia SDK is a gold mine, thanks for that! 😀
I checked it through the current state of dgVoodoo and found it's roughly 3-4 tests that have problems (opposed to 2.53, there are some more with that version). I'd like to fix them at any price because they are related to fundamental rendering.
On the other side, as for nVidia demos, I'm aware of the bugs like frozing. I debugged them earlier and found the problem but it's not so easy to fix it (FPU). This all would require a little dgV refactoring so I didn't give them too high priority.

I'd also like to release a new WIP with the modified Matrox Tech demo executable.
But, developing is going way slower than I expected, and found the the demo can still crash if it's not launched from a debugger. I'd like to trace this down. BTW, I also realized that the demo has its own font in Data\data5.pdi file. It seems to be a file pack, including font.iff which must be a bitmap font. When this file is read from data5.pdi then no API calls to Windows are done, at least no any that has anything to do with fonts. So as it turned out, this font problem has nothing to do with Windows fonts. 😐

Reply 17 of 103, by CoolGamer

User metadata
Rank Member
Rank
Member

Sounds good. I will wait for the new WIP version. Just to let you know there are two more Matrox demos which are having issues with dgVoodoo WIP31. I wrote them below.

Matrox G200 Tech Demo (DX5)
http://soggi.eu/video-cards/tech-demos.htm
http://toastytech.com/files/Is3Engine.zip

This G200 demo probably uses a simpler version of the same engine that G400 demo uses. You need to use 32bit version of InstallShield3 setup32.exe to install it. It has a GPU name check which can be easily turned off using Ollydbg, but after that it starts giving initialization errors. There is no video of this demo on the internet so its visuals are a big mystery.

Matrox Parhelia-512 Coral Reef Tech Demo (DX8.1)
https://www.youtube.com/watch?v=qFkZFMQn_wo
http://ixbtlabs.com/articles/parhelia/?48165

This is the best looking DX 8.1 tech demo that I have ever seen. It is possible to run it via dgVoodo WIP31 (more on this below) but its visuals do not look right. Most of the water shaders do not work via dgVoodoo WIP31. As a result it looks like water was taken out of the demo. Readme file shows the controls. You can switch cameras by using the Tab key. One of the still cameras allow you to free roam the scene by using the arrow keys. It is possible to force widescreen resolutions by editing tdrg_v2.ini that is located in the installation folder.

Files:
https://www.ausgamers.com/files/download/5180 … a-reef-techdemo
http://www.tommti-systems.de/main-Dateien/files.html

Instructions:

After you install the demo, you need to run it through ToMMTi-Systems 3D analyzer v.2.36 (a directx 8 wrapper) to prevent initialization and GPU name check errors.
1) Extract ToMMTi-Systems 3D analyzer to a folder and run its GUI.
2) Click "select" in ToMMTi-Systems 3D analyzer GUI and choose Matrox Coral Reef demo's executable
3) Check mark "Matrox Reef Demo fix"
4) Click "run".

Loading screen does not show (which is a bug caused by this 3d analyzer wrapper) and displays a black screen. Patiently wait through the black screen and the demo will start to run. I am not sure if the wrapper negatively effects the visuals or not (by cancelling some calls). It looks good to me.

In order to force ToMMTi-Systems 3D analyzer to load dgVoodoo, you need to rename your systems's d3d8.dll (residing in windows\syswow64 folder) to something else (such as d3zz.dll), place dgVoodoo's d3d8.dll file into windows\syswow64 and hex edit it to load d3zz.dll. I do not recommend this method for everyday use. I did it for debugging purposes only. Demo only supports 59 hz display frequency setting in tdrg_v2.ini when running through dgVoodoo.

There is also patch which upgrades the demo to v1.1 but that patch is incompatible with ToMMTi-Systems 3D analyzer. I don't know what the patch fixes. I wrote the link below.
ftp://ftp.matrox.com/pub/mga/utils/reef_demo_upgrade.exe

Last edited by CoolGamer on 2017-03-12, 22:23. Edited 1 time in total.

Reply 19 of 103, by Dege

User metadata
Rank l33t
Rank
l33t
lowenz wrote:

WOW, great demo back in the days!

I suggest Dege to patch to 1.1 and solve (if the can), totally bypassing the 3D analyzer use.

Adding a new card type 'Matrox Parhelia' ? 😀
Altough I don't know what properties the demo checks for (I guess VendorID/DeviceID like ATI demos).