Jump to content

SuperVGA+ Project


LLXX

Recommended Posts

I recently got a laptop, and unfortunately it contained an Intel 945GM chipset with integrated graphics (GMA950).

It works fine as a standard VGA adapter, although the resolution and color depth leave much to be desired. I have experimented with forcing different drives on it, and have met some interesting results -

- Intel i810/810E/810E-DC100 driver installs and works fine in 640x480x4; changing to any other mode will result in the driver locking up during initialisation.

- Intel i830/840/855/865 drivers - same as above

- Intel official 945GM driver for XP, with edited INF - bluescreen during init

- SciTech 945GM drivers - not available, and the 945G drivers refuse to install. I can't figure out how to unpack the installer entirely and get the actual driver core files and INFs.

- Windows 98 SuperVGA - here's where it gets interesting: once again, it works fine in 640x480x4 (standard VGA mode), but unlike the standard VGA driver, it allows one to change the resolution up to the maximum supported by the monitor (in this case 1024x768) and also enable 16-bit color depth. As above, changing the resolution beyond standard VGA causes the driver to fail to init, but it reverts to 640x480x4.

What I find most pleasant is that unlike most of the other drivers, the SuperVGA driver consists of only three small files - framebuf.dll, framebuf.drv, and supervga.drv, as opposed to the normal numerous files.

I've checked my 945GM with VESA test tool, and even successfully set it to one of the high-resolution modes via BIOS VESA functions. Perhaps the default supervga driver is just not initialising the mode correctly, otherwise it should work.

I'm planning the following tasks:

- Support 900-series integrated video chipsets (GMA900 and 950) - of course, only 2d will be supported, maybe accelerated GPU functions if possible.

- Write a universal video driver to replace the standard VGA driver. This will be very useful

As a side note, Windows XP (which is currently running on the machine with the 945GM) is unable to detect the 945GM's integrated graphics chip model, but is able to run it at 1024x768 16-bit color mode. The device manager shows "unknown device", and I am unable to find out what it's using as a video driver. Perhaps Windows XP already comes with a universal video driver? (Installed it on an 865G chipset mobo before, it detected and initialised the integrated video perfectly but without accelerated graphics support).

Comments, suggestions, etc. are welcome.

Link to comment
Share on other sites


That definitely worked as in it booted to the desktop, but when I attempted to open a command prompt it crashed. (Only later did I read in the documentation that windowed DOS boxes aren't supported). This is unacceptable, since one of the main reasons for using win98se on my machine is its superior DOS emulation, and not being able to run multiple windowed DOS boxes is a major setback.

Some interesting fragments of code from the supervga driver I'm looking at... looks like it has more capabilities than I thought it would:

EnumRes:; (2:02C1)
02C1 xor ax, ax
02C3 cmp esi, 14000C8h ; 320x200 (0)
02CA jz l_1F1_329
02CC inc ax
02CD cmp esi, 14000F0h ; 320x240 (1)
02D4 jz l_1F1_329
02D6 inc ax
02D7 cmp esi, 2000180h ; 512x384 (2)
02DE jz l_1F1_329
02E0 inc ax
02E1 cmp esi, 2800190h ; 640x400 (3)
02E8 jz l_1F1_329
02EA inc ax
02EB cmp esi, 28001E0h ; 640x480 (4)
02F2 jz l_1F1_329
02F4 inc ax
02F5 cmp esi, 3200258h ; 800x600 (5)
02FC jz l_1F1_329
02FE inc ax
02FF cmp esi, 4000300h ; 1024x768 (6)
0306 jz l_1F1_329
0308 inc ax
0309 cmp esi, 5000400h ; 1280x1024 (7)
0310 jz l_1F1_329
0312 inc ax
0313 cmp esi, 4800360h ; 1152x864 (8)
031A jz l_1F1_329
031C inc ax
031D cmp esi, 64004B0h ; 1600x1200 (9)
0324 jz l_1F1_329
0326 mov ax, 4 ; default to 640x480
l_1F1_329:
0329 retn

...and even support of more than 256 colors...

0272	 mov ax, bpp
0275 cmp ax, 1 ; mono
0278 jz l_1F1_296
027A cmp ax, 4 ; 16-color
027D jz l_1F1_296
027F cmp ax, 8 ; 256-color
0282 jz l_1F1_296
0284 cmp ax, 16 ; 64k/32k color
0287 jz l_1F1_296
0289 cmp ax, 24 ; 16M color
028C jz l_1F1_296
028E cmp ax, 32 ; 16M color + Alpha
0291 jz l_1F1_296
0293 mov ax, 8 ; default to 256-color mode

All I'm looking for right now is the registers documentation for the 900 series integrated graphics.

Link to comment
Share on other sites

Didn't Intel just release their video drivers as opensource for linux?

here it is: http://www.intellinuxgraphics.org/

This driver supports all intel graphics chipsets, going back to the i810, and up to the new 965G. I think this should suffice as documentation for you.

Let me know if this helps you out. :thumbup

Edited by jimmsta
Link to comment
Share on other sites

That definitely worked as in it booted to the desktop, but when I attempted to open a command prompt it crashed. (Only later did I read in the documentation that windowed DOS boxes aren't supported). This is unacceptable, since one of the main reasons for using win98se on my machine is its superior DOS emulation, and not being able to run multiple windowed DOS boxes is a major setback.

Wait, looks like bools***.

It may be my fault. Try to expirement with different .3GR and .386 files. (IIRC 386Grabber files provide support for video-mode changing for DOS apps...

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...