Announcement

Collapse
No announcement yet.

Hacking G200-MMS drivers to make OGL work with a G200 in XP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hacking G200-MMS drivers to make OGL work with a G200 in XP

    As you may know, Matrox has recently released <a href="http://www.matrox.com/mga/support/drivers/latest/home.cfm">Windows XP drivers for G200 MMS</a>, but none for other G200 models. The G200 drivers provided with XP don't support OpenGL; the new G200 MMS drivers do. Officially, you're not supposed to use the MMS drivers with other G200 variants; unofficially, there is a way to do it, and it works (mostly).

    There are two problems when you try to do the above hack:
    1. Your normal G200 board will not be recognized by Matrox's setup program - it will be listed under unsupported boards.
    2. The MMS board being a PCI card (at least as far as I know), AGP texturing will be unavailable by default when using the MMS driver, even if your G200 board is an AGP card.

    There are solutions to both problems. They are fairly simple, but before you spend time reading them, some words of caution:

    -If you don't know what 'regedit' means, don't try to do this by yourself. Needless to say, you can mess up your system by hacking into things you don't know about; don't say I didn't warn you... no guarantees whatsoever (paste your favorite piece of legalese here...). This stuff worked on my system; I don't know about yours. If you do try it, please share your findings; others may benefit from them.

    -Don't expect any kind of support from Matrox on this one; they specifically advised against it (but I need my OpenGL stuff, **** it!).

    -Most of the tests I did on this configuration were OK. The only program that had problems with this setup was Return to Castle Wolfenstein: it runs, but the menu textures are messed up, and some special effects in the game don't work; the most annoying one happens when you get shot - the screen gets garbled up for a couple of seconds, which is enough... At least this is what happened on my system; if anybody else cares to try it and share the results, it would be a good idea. If Matrox has any intention of releasing G200 AGP XP drivers anytime soon, they better make sure they work correctly with the above game, otherwise there will be lots of dissatisfied customers out there... And I don't want to hear the story with "this game requires at least 16 MB on your card", as this is not the reason for the problem: I've seen RTCW running properly on exactly the same board, under NT4 and W2K.

    OK now, if you got this far, here are the solutions for the two problems above. The instructions assume you have XP installed with the default G200 drivers that come with the OS.

    1. You need to add your board's ID to the list of supported IDs in the 'G200MMS.inf' file in the drivers' installation directory. Do the following:

    a. Go to 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ PCI'. You should find a subkey that looks like
    'VEN_102B&DEV_0521&SUBSYS_xxxx102B&REV_xx'.

    b. Find the '[Mfg.Matrox]' section in 'G200MMS.inf'. You need to add a line, similar to the ones already in there, that matches the key name you found in the registry; that is, one that looks like
    '%Str00%%ENG%=IN00.ENG,PCI\VEN_102B&DEV_0521&SUBSY S_xxxx102B'

    As you can see, it's only the first four hex digits after 'SUBSYS_' that are different from one line to another. Those form the PCI Subsystem ID, and they're different among the various kinds of chips and boards based on the G200 core.

    c. That's it. The board and driver names will still be something like 'Matrox G200 Multi-Monitor'; if that bothers you, you can modify the strings in the inf file.

    2. If you install the drivers in the above configuration and then look in 'Dxdiag' on the 'Display' tab, you'll see that 'AGP Texture Acceleration' is marked as unavailable. As far as I know, there's no configuration setting to make that available. There's a capabilities bit mask that is returned by the display driver when the kernel queries it for DirectDraw capabilities. The only way I have found to set that mask to the appropriate value was to patch the driver DLL. Most OpenGL applications seem to work fine without AGP texturing, but enabling it may provide a performance improvement. Obviously, this can't work if you have a PCI board; you have to have an AGP G200. If you feel brave enough, here's what you can do.

    a. Use 'expand.exe' to uncompress 'g200d.dl_' from the installation directory.

    b. Using a hex editor, search for the following hex string in the DLL image:
    0D 50 02 00 00 81 CA 00 90
    There should be only one occurence.

    c. Replace the last byte with 92 hex.

    d. Compress the DLL image back; 'compress.exe' is available from several sources, including the Platform SDK.

    e. That's about it. Installing the patched driver using Matrox's setup should give you AGP texturing. -<a href="http://forum.matrox.com/mgaforum/Forum10/HTML/003742.html">Gogulete</a>, posting to Matrox's BBS
    Anyone try this?

    (If you decide to, I'd recommend creating a System Restore point first.)
Working...
X