VOGONS


First post, by Xenos999

User metadata
Rank Newbie
Rank
Newbie

Edit: scroll to the bottom, problem solved in latest release of dgVoodoo2.

The "game": Trixter X-Dream (mountain biking simulator)

This is proprietary software that used to be sold with a MTB-style exercise bike. Long before Zwift et al, you could get on a mountain bike, compete against other players, steering around a track with handlebars, changing gears to combat changing resistance on changing terrain. At circa £8k per unit back in the day, it was gym-only equipment.

Unfortunately I'm having some difficulty getting it all to work on a modern PC. The original, supplied with the bike, is a Dell Optiplex 780 with Windows 7 (pre SP1) and a Geforce 210 based video card.

The game is actually playable on a modern machine once you've got the bike set up with the right USB to Serial driver and COM port settings, but it has 1 problem I have not been able to solve yet: the application tries to play some .wmv files, but it plays the sound and shows a blank blue screen. Some of these are just advertising, but some of them are for "end of tier" award screens. The user needs to know to press the green button on the bike's control panel to "click" through them to get on with the simulation.

This all works fine on the original hardware.
On new hardware, the wmv files all play fine in any video player I try, e.g. Windows Media Player, VLC, graphstudionext, just not in the application itself.

When I open the wmv files in graphstudionext on the original machine, the renderer is receiving RGB32, on modern hardware NV12 by default. I did some fiddling with the K-Lite codec pack and ffdshow on a VM and now the renderer receives RGB32, but the application still shows the video as blue.

Enter dgVoodoo 2.75.1 and DxWnd.

If I configure DxWnd to use the dgVoodoo DLLs, the videos play fine in the simulation, but 3D rendering doesn't work (I've tried all the 3D card output options).
If I run grapheditnext with dgVoodoo, there's a colorspace converter in the graph that converts the NV12 to RGB32.

Any ideas?
e.g. Is there a way to get dgVoodoo to only do its thing for playing wmv files in DirectShow and pass-through in other situations?

Last edited by Xenos999 on 2023-07-08, 21:43. Edited 3 times in total.

Reply 3 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2021-10-04, 10:22:

dgVoodoo has support for DirectShow, so it's weird.
Can I get this game from somewhere? I did a quick search but found nothing about such a pc game.

https://youtu.be/ZRSq8wP7FsU

Where to get it? It comes with the bike in the video I provided the link to. I got mine on eBay.

It's the DirectShow bit that's working with dgVoodoo, the 3D bit that's not.

Last edited by Xenos999 on 2021-10-04, 19:41. Edited 1 time in total.

Reply 4 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie
RetroGamer4Ever wrote on 2021-10-04, 12:22:

Curious thing this is. There seem to be two versions, one is a D3D game and the other FMV.

I don't know about the FMV version.

There was XDream 1, for which the software went up to v 3.50.0.3 AFAIK. This is the one I'm working with. https://www.youtube.com/watch?v=wXnBz8oGLQY
There was a later version, X Dream 2 https://fb.watch/8rgxRu027x/ and maybe this https://www.youtube.com/watch?v=ACozqr2Z9K4&t=62s which might be FMV, but I've never seen them in person.

I'm sure XDream 1 is using D3D and using dgVoodoo and related utilities does have an effect. It's loading quartz.dll about the time it plays the wmv files.

Reply 5 of 15, by Dege

User metadata
Rank l33t
Rank
l33t
Xenos999 wrote on 2021-10-04, 19:17:

Where to get it? It comes with the bike in the video I provided the link to. I got mine on eBay.

Ok, so it's not something that you could share with me.

What happens if you run it purely through dgVoodoo, without DxWnd?
Also, you could try the _dbg version of dgVoodoo and see the log if it contains an error msg somewhere.
I got an error report back some time ago, where the Corn emulator produced black screen with dgVoodoo and as it turned out, it was because of an incompatible parameter validation in D3D vertex buffer calls.
I suspect a similar reason here.

Reply 6 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2021-10-06, 12:01:
Ok, so it's not something that you could share with me. […]
Show full quote
Xenos999 wrote on 2021-10-04, 19:17:

Where to get it? It comes with the bike in the video I provided the link to. I got mine on eBay.

Ok, so it's not something that you could share with me.

What happens if you run it purely through dgVoodoo, without DxWnd?
Also, you could try the _dbg version of dgVoodoo and see the log if it contains an error msg somewhere.
I got an error report back some time ago, where the Corn emulator produced black screen with dgVoodoo and as it turned out, it was because of an incompatible parameter validation in D3D vertex buffer calls.
I suspect a similar reason here.

No difference when run fullscreen without DxWnd - it is using dgVoodoo as I can see the watermark. I tried the debug version, and enabled debugging in the dgVoodoo.conf file:

Info = Enable
Warning = Enable
Error = Enable
MaxTraceLevel = 1

LogToFile = true

I was unable to find a log file.

Even if you had the software, you wouldn't be able to do much with it without the bike. No keyboard input, just bike signals from COM2, although you could probably debug this problem.

Reply 7 of 15, by Dege

User metadata
Rank l33t
Rank
l33t

Oh, sorry about that, but that option is useless. I should have removed it because I'm not going to implement logging into file.

Use DebugView or DebugView++ instead, it's much better than file logging (let it run in the background, start the app through the _dbg version of dgVoodoo and you'll see the log in the viewer).

Xenos999 wrote on 2021-10-06, 23:37:

Even if you had the software, you wouldn't be able to do much with it without the bike. No keyboard input, just bike signals from COM2, although you could probably debug this problem.

Yes, it's hard in that way. But, if the start/menu screen is already blank, and no input is needed after all to reproduce the problem, maybe it'd be useful.

Reply 8 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie

The simulation didn't make it to the 3D problems with DebugView, but it did with DebugView++. The only lines in the log for the simulation's process (TrixterAppRelease.exe) with "error" are for the same error every time.

[dgVoodoo] ERROR: DirectDraw (08D36280)::QueryInterface: Unknown interface (riid = {{aca12120-3356-11d1-8fcf-00c04fc29b4e}}) is being queried.

Here's some context:

137.086977 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe [dgVoodoo] INFO: Direct3D9 (09053590) Virtual video card is 'dgVoodoo Virtual 3D Accelerated' with 2048MB onboard memory.
137.087071 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe Direct3D9::QueryInterface (this = 09053590)
137.087123 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe Direct3D9::GetAdapterCount (this = 09053590)
137.087219 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe Direct3D9::GetAdapterIdentifier (this = 09053590, Adapter = 0, Flags = 0, pIdentifier = f92e2c8)
137.087310 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe Direct3D9::GetDeviceCaps (this = 09053590, Adapter = 0, DeviceType = D3DDEVTYPE_HAL, pCaps = 0F92E160)
137.087372 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe Direct3D9::Release (this = 09053590)
137.087445 2021/10/10 14:14:25.630 13412 TrixterAppRelease.exe [dgVoodoo] INFO: Direct3D9 (09053590) is released.
137.087581 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe DirectDraw::QueryInterface (this = 08D36280, riid = {aca12120-3356-11d1-8fcf-00c04fc29b4e} (?), ppvObject = 0B521434)
137.087658 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe Direct3D::QueryInterface (this = 107466F0, riid = ?, ppvObject = 0B521434)
137.087774 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe [dgVoodoo] ERROR: DirectDraw (08D36280)::QueryInterface: Creating aggregated D3D object has failed on DirectDraw.
137.087833 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe [dgVoodoo] ERROR: DirectDraw (08D36280)::QueryInterface: Unknown interface (riid = {{aca12120-3356-11d1-8fcf-00c04fc29b4e}}) is being queried.
137.087981 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe DirectDrawSurface::GetClipper (this = 107329C8, lplpDDClipper = 0F92E934)
137.088040 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe DirectDrawClipper::AddRef (this = 00B097E8)
137.088168 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe DirectDrawClipper::SetHWnd (this = 00B097E8, dwFlags = 0, hWnd = 707da)
137.088319 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe [dgVoodoo] INFO: DirectDrawClipper (00B097E8)::SetHwnd: Clipper is bound to window (707DA).
137.088371 2021/10/10 14:14:25.631 13412 TrixterAppRelease.exe DirectDrawClipper::Release (this = 00B097E8)
137.088597 2021/10/10 14:14:25.632 13412 TrixterAppRelease.exe DirectDraw::QueryInterface (this = 08D36280, riid = {aca12120-3356-11d1-8fcf-00c04fc29b4e} (?), ppvObject = 0B5642E4)
137.088670 2021/10/10 14:14:25.632 13412 TrixterAppRelease.exe Direct3D::QueryInterface (this = 107466F0, riid = ?, ppvObject = 0B5642E4)
137.088746 2021/10/10 14:14:25.632 13412 TrixterAppRelease.exe [dgVoodoo] ERROR: DirectDraw (08D36280)::QueryInterface: Creating aggregated D3D object has failed on DirectDraw.
137.088822 2021/10/10 14:14:25.632 13412 TrixterAppRelease.exe [dgVoodoo] ERROR: DirectDraw (08D36280)::QueryInterface: Unknown interface (riid = {{aca12120-3356-11d1-8fcf-00c04fc29b4e}}) is being queried.

Reply 9 of 15, by Dege

User metadata
Rank l33t
Rank
l33t

Thanks. That's error is normal, DirectShow queries for an unsupported DDraw interface but if it's not supported (like in this case) it solves the problem in another way.
So, the video is played back through DirectShow (DDraw) and the game itself is D3D9.

Could you plz send me a full log (with API calls enabled) but with dgVoodoo DDraw.dll deleted from the game folder?
I mean, run the game with D3D9.dll only, to the point where sg should appear but it doesn't.

Reply 10 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie

I've had to split the log, even zipped it was above the allowed limit.

According to my stopwatch, from starting the executable at 0m00s:

0m53s : the wmv that shows blue without dgVoodoo begins
1m25s : the wmv ends
2m16s : sounds effects begin
2m45s : a few colored spots appear in a few places
2m57s : 3D content is supposed to begin, but doesn't work

I'm not sure how these correspond to the log, which seems to start around 10s. But I guess you can align these times with expected calls in the log.

This is with MaxTraceLevel = 1

Attachments

  • Filename
    trixter-2.zip
    File size
    4.81 MiB
    Downloads
    62 downloads
    File comment
    2/2
    File license
    Public domain
  • Filename
    trixter-1.zip
    File size
    3.35 MiB
    Downloads
    62 downloads
    File comment
    1/2
    File license
    Public domain

Reply 11 of 15, by Dege

User metadata
Rank l33t
Rank
l33t

Thanx!
I browsed the log but I could not see anything interesting in it. Everything looks normal.
One thing: it seems that this game is based on D3DX because there are D3D state block handling call-patterns in the log.
My only tip now is, maybe there is a state block related bug somewhere in dgVoodoo and that causes the blank screen.

But, I'm afraid I cannot solve it remotely, only by debugging.

Reply 13 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie

If you have this simulation (I don't like to call it a game) - but don't have a working bike for it, I have been working on an API and some diagnostic applications for it in my github repo "trixter-xdream-bike".

Included in the solution (not the release msi files) is a project called Trixter.XDream.TestController. It's a bit rough, but if you use com0com http://com0com.sourceforge.net/to set up a COM port pair COM2 and COM15, this app will let you feed control information to the X-Dream software. You can also run it with the Trixter.XDream.UI utility to see what it's sending.

The test controller app will get you around the tracks, but don't expect to win any races.

You can also reconfigure the X-Dream software to use a different COM port using the Scripts\main*.txt files although I've not worked out which one is supposed to be used for a specific version of the software.

Hopefully all the help one needs to get the software up an running on a Windows 10 machine is included in the repository's discussions.

Reply 14 of 15, by Xenos999

User metadata
Rank Newbie
Rank
Newbie

If anyone does try out my test controller, once you're "riding" I recommend holding the blue button to change to the 1st person view, at least once you've observed the effect of changing the crank speed on the rider animation.

Since my previous post I've added a "gamepad" button which brings up a form that's a bit more useable for gameplay rather than for feeding values to another diagnostic application.