-1

I have a bunch of Windows 32-bit fullscreen EXEs that were compiled for the Windows XP era and use some version of DirectX for settings the graphics mode: 320x240x8. It is hardcoded, native (not faked in any way), and the binaries cannot be touched, recompiled or modified in any way (don't ask).

I'm trying to get these to run on Windows 7 and later (it doesn't even run on XP without the right card and driver, just to clear up any confusion). They only run if the video card and its driver specifically supports this mode, which is extremely rare, regardless of whether it's run on XP or 7.

I have been on this problem for a long time, asking experts for help numerous times and getting all kinds of potential solution, which I've tried one by one. Each of them fail with the same error: can't set video mode. The problem is always that it cannot set the video mode. The obvious solution is that it cannot attempt to set the video mode, because it is not supported. So I need some kind of small EXE that I can bundle with these EXEs and which can be set up to "wrap around" it and fool it into thinking that it's actually set the mode, whereas it's actually running in some kind of emulated video window.

I have tried "Wine on Windows", various utilities that "change the resolution", running it inside a VM, compatibility settings, etc. Just about anything you immediately think of. Nothing works at all. But the VM thing wouldn't be good even if it did work, because this has to be "distributable" as well.

Can anyone help me? Is this even possible to solve at all? It seems so bizarre that it's not possible to "trick" the programs into thinking that they actually did get to set the video mode.

I hope that a true expert will be able to come up with some solution.

  • Looks like question to superuser. Short of using some sort of virtual machine I don't think you can really do anything reasonably. – Alexei Levenkov Sep 25 '12 at 04:22
  • I don't know what you mean by "looks like question to superuser". And the VM thing I already explained... it doesn't work, and it's not a good solution even if it did. – user1696157 Sep 25 '12 at 04:53
  • You could try Detours, I suppose. It's expensive, but you seem to have already ruled out every other possible approach. – Harry Johnston Sep 25 '12 at 04:57
  • @HarryJohnston http://research.microsoft.com/en-us/projects/detours/ looks really interesting. – Preet Sangha Sep 25 '12 at 05:01
  • "looks like question to superuser": from FAQ - Computer enthusiasts and power users, ask on [Super User](http://superuser.com/). – Alexei Levenkov Sep 25 '12 at 07:49

2 Answers2

2

My driver experience is not in video, but I reckon you should be able to write a driver that responds to/intercepts directx calls with what you want it say. As I understand it the video stack doesn't have the filter drivers though.

However, that emulated mode will need to support an awful lot of the direct ex API I suspect. Unless of course the number of calls is very low.

Display Driver Model (XDDM) Design Guide should be your starting point.

Preet Sangha
  • 64,563
  • 18
  • 145
  • 216
0

You may want to give this a try: http://www.makeuseof.com/tag/2-ways-force-directx-applications-launch-windowed-fullscreen-windows/

Summary

  1. DXWIN -- Forces DirectX programs to run in a window.
  2. D3DWindower -- Very similar program. English port of Japanese program.

I've used DXWIN in the past to keep programs out of full screen modes my hardware didn't handle well. On the downside, you get a small window.

Edit: Neither program mentions running in Windows 7, and of course there is no mention of 64 bit OSes. If either one works, post an solution and I'll upvote you for it.

Jeremy J Starcher
  • 23,369
  • 6
  • 54
  • 74