Home page | EN-US English | RU Russian | Other projects (EN-US English)


VBEMP x86 Project
Universal VESA/VBE Video Display Driver
(for Windows 9x x86 Architecture)

This project started on May, 2004.

Overview


Key features :

Planned features :


Download drivers


This driver is intended for using in case when your have some new or unknown video card(s) and you don't have drivers for it. It's really better to contact manufacturer of your video card or search THE WEB for the drivers. ONLY if you finally cannot find driver for your video card I recommend you to use mine (vbemp.drv). My driver is very simple one & does not provide any kind of 3D hardware acceleration (DirectX & OpenGL).

My driver does NOT support multiple video cards connected simultaneously and this feature is NOT planned.

Before installing VBEMP.DRV I recommend removing any display drivers installed and switching to the standard VGA mode 640x480x16colors.

System requirements :

OS

Version

Description

Link

Windows 9x clones - ALL of them

Debug version pre-beta
2008.10.21

Universal VBE20 version. *

Download

Windows 9x clones - ALL of them

Debug version pre-beta
2008.03.23

Universal/Manual VBE20 version. *

Download

Windows 9x clones - ALL of them

Original source code

FRAMEBUF sample from Windows 98 DDK. Compile it with MASM 6.x

framebuf.zip

* If universal version does not work with your card, you may try Manual version. To get it you should contact me by e-mail & send me report generated by INFOVBE.EXE, so I could send you personal driver for your video card by e-mail.

Installation note 0: Current driver unsolved problems:

Do not ask me about it, just wait for next driver release, which date is TBD.

Installation note 1: If you are experiencing problems while installing my driver read article below. Details here: MSKB: How to install or change a video driver (Q131806)

Installation note 2: If your card is working slowly and screen is flickering with VBEMP installed, especially when moving large windows and scrolling texts you may improve it: go to Control Panel -> Display -> Settings tab -> Advanced button -> Troubleshooting tab and move Hardware acceleration slider to the left position (None). Details here: MSKB: How to Change the Graphics Hardware Acceleration Setting in Windows (Q263391)

Installation note 3: Starting from version dated 2008.03.16, vbemp9x.zip contains these variants of VBEMP driver:

"UNIVERSAL": "MANUAL" (obsolete): Special builds: if one version is not working correctly with your card try another or vice versa....

Installation note 3: By default any Plug'N'Play video cards will be detected CORRECTLY by 9x version of my driver. But if you wish, you MAY add your video card's PCI VENDOR/DEVICE ID in vbemp.inf so your card will named as it is or you can select the driver manually when Windows firstly find an unknown device. This is an optional operation!
Sample:

; INF file for VBEMP display driver
; Copyright 1988-2008, Anapa Corp.

[version]
Class=DISPLAY
signature="$CHICAGO$"
Provider=%Mfg%
 . . . . . .

 . . . . . .
[Mfg]
%AnaPa.DeviceDesc% = Driver.Install, NOPNP
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc1% = Driver.Install, PCI\CC_0300
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc2% = Driver.Install, PCI\CC_0301
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc3% = Driver.Install, PCI\CC_0380
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc4% = Driver.Install, *PNP0900
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc5% = Driver.Install, *PNP0917
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc6% = Driver.Install, NOPNP
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc7% = Driver.Install, PCI\VEN_1002&DEV_5046
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc8% = Driver.Install, PCI\VEN_1002&DEV_4966&SUBSYS_4F721002
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc9% = Driver.Install, PCI\VEN_1002&DEV_4963&SUBSYS_4F731002
%AnaPa.DeviceDesc%%AnaPa.DeviceDescA% = Driver.Install, PCI\VEN_8086&DEV_2562&SUBSYS_52478086
%AnaPa.DeviceDesc%%AnaPa.DeviceDescB% = Driver.Install, PCI\VEN_xxxx&DEV_yyyy&SUBSYS_zzzzzzzz ; card template, see below 
 . . . . . .

 . . . . . .
[Strings]
Mfg="Anapa Corp."
AnaPa.DeviceDesc = "VBE Miniport"
AnaPa.DeviceDesc1 = " - Standard PCI Graphics Adapter (VGA)"
AnaPa.DeviceDesc2 = " - Standard PCI Graphics Adapter (XGA)"
AnaPa.DeviceDesc3 = " - Standard PCI Graphics Adapter"
AnaPa.DeviceDesc4 = " - Standard Graphics Adapter (VGA)"
AnaPa.DeviceDesc5 = " - VGA"
AnaPa.DeviceDesc6 = " - SVGA"
AnaPa.DeviceDesc7 = " (ATI Rage 128PRO 4x pri)"
AnaPa.DeviceDesc8 = " (ATI RV250 pri)"
AnaPa.DeviceDesc9 = " (ATI RV250 sec)"
AnaPa.DeviceDescA = " (Intel D845G)"
AnaPa.DeviceDescB = " Your card name"
 . . . . . .

To create this string you may use PCI.EXE tool mentioned below, here is a sample listing:

 . . . . . .
 Bus 1 (AGP), Device Number 0, Device Function 0
 Vendor 1002h ATI Technologies Inc
 Device 4966h Radeon 9000 Series (RV250)
 Command 0187h (I/O Access, Memory Access, BusMaster, Wait Cycles, System Errors)
 Status 02B0h (Has Capabilities List, Supports 66MHz, Supports Back-To-Back Trans., Medium Timing)
 Revision 01h, Header Type 80h, Bus Latency Timer FFh
 Minimum Bus Grant 08h, Maximum Bus Latency 00h
 Self test 00h (Self test not supported)
 Cache line size 32 Bytes (8 DWords)
 PCI Class Display, type VGA
 Subsystem ID 4F721002h Radeon 9000 Series (RV250)
 Subsystem Vendor 1002h ATI Technologies Inc
 . . . . . .

Screenshots. VBEMP x86 Project in work :)


Windows 95 4.00.1111 (4.00.950 C) W95-1
Windows 98 SE 4.10.2222 W98-1

Instruction: Complete VBEMP driver removal from Win9x system


  1. In \%WINDOWS_DIR%\SYSTEM.INI modify or add this line in [boot] section:
    *DisplayFallBack=1
    
  2. Remove files:
    \%WINDOWS_DIR%\INF\DRVDATA.BIN
    \%WINDOWS_DIR%\INF\DRVIDX.BIN
    \%WINDOWS_DIR%\SYSTEM\VBEMP.SYS 
    \%WINDOWS_DIR%\SYSTEM\VBEMP.VXD 
    \%WINDOWS_DIR%\INF\vbemp.inf
    \%WINDOWS_DIR%\INF\vbemp.pnf
    
  3. Delete your card from Device Manager or clean Registry hives:
    \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class\Display
    - delete all
    \\HKEY_LOCAL_MACHINE\ENUM\PCI 
    - delete all VEN_xxxx&DEV_yyyyy&SUBSYS_zzzzzzzz entries ( for your card ONLY )
    

Additional information


Official VESA BIOS Extensions 3.0 standard information - http://www.vesa.org/public/vbe/vbe3.pdf.

THE VESA GENERALIZED TIMING FORMULA (GTF) Excel™ spreadsheet - http://www.vesa.org/Public/GTF/GTF_V1R1.xls.

VESA COORDINATED VIDEO TIMING (CVT) GENERATOR Revision 1.1 Excel™ spreadsheet - http://www.vesa.org/Public/CVT/CVTd6r1.xls.

SciTech Software Inc released commercial version of a similar driver (SciTech SNAP Graphics changelog) for Windows, OS/2, QNX & Linux. These versions are 21-day trial.

  1. Download Windows 2000/XP Version 3.1.4 DPVL beta2 [dpvlbeta2.zip].
  2. Download Windows NT 4.0 Version 3.1.1 [snap-winnt-3.1.1.exe]. Supported hardware.
  3. Download Windows NT 4.0 Version 3.1.3 beta 1284 [snap-winnt-3.1.3-1284.exe].
  4. Download DOS Version 3.1.1 [snap-dos-3.1.1.exe]. Supported hardware.
  5. Download IBM OS/2 (eCS) Version 3.1.8 [snap-os2-3.1.8.exe]. Supported hardware.

A more recent Personal (6-month trial) version you may get after FREE registering at http://my.scitechsoft.com/navigate.php.

Here you can find some tests and benchmarks which I use to test performance of my driver - benches.rar


Tested video cards/chipsets


  1. VBE 3.00 INTERNAL Intel Q963 (GMA 3000) Graphics
  2. VBE 3.00 INTERNAL Intel 82845G Graphics
  3. VBE 2.00 AGP 8Mb ATI Rage 3D Pro AGP 2x (BGA Package)
  4. VBE 2.00 AGP 8Mb ATI Rage P/M Mobility AGP 2x
  5. VBE 2.00 AGP 32Mb ATI Rage128 PF/Pro AGP 4x (TMDS)
  6. VBE 2.00 AGP 64Mb ATI Radeon 9000 Series (RV250)
  7. VBE 2.00 INTERNAL ATI Radeon Xpress 200M Series
  8. VBE 3.00 16Mb? ATI Radeon X1650 Series (RV530 LE)
  9. VBE 3.00 16Mb? ATI Radeon X1950 GT [RV570]
  10. VBE 3.00 AGP 16Mb 3Dfx Interactive Voodoo3 2000
  11. VBE 3.00 PCI 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  12. VBE 3.00 AGP 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  13. VBE 3.00 AGP 16Mb nVidia RIVA TNT GUI+3D Accelerator [NV4]
  14. VBE 3.00 AGP 16Mb nVidia RIVA TNT2 Model 64 [NVM64]
  15. VBE 3.00 AGP 32Mb nVidia GeForce2 MX/MX400 [NV11]
  16. VBE 3.00 AGP 64Mb nVidia GeForce2 GTS/PRO [NV15]
  17. VBE 3.00 AGP 64Mb nVidia Geforce3 Ti 200 [NV20]
  18. VBE 3.00 AGP 128Mb nVidia GeForce FX 5200 [NV34.3]
  19. VBE 3.00 INTERNAL nVidia GeForce 6100 nForce 430
  20. VBE 3.00 nVidia GeForce 7600GS
  21. VBE 2.00 PCI 4Mb Matrox MGA-2164W Millenium II PCI
  22. VBE 2.00 AGP 4Mb Matrox MGA-G100 AGP
  23. VBE 2.00 PCI 4Mb TSENG LABS Inc ET6000
  24. VBE 2.00 PCI 2Mb S3 Inc 86C375 ViRGE/DX
  25. VBE 2.00 AGP 4Mb S3 Inc 86C368 Trio3D/2X
  26. VBE 2.00 INTERNAL Trident CyberBlade i7
  27. VBE 2.00 PCI 8Mb? VirtualBox VBE Adapter (Innotek VirtualBox)
  28. VBE 2.00 PCI 16Mb VMware SVGA II (VMware)
  29. VBE 2.00 PCI 4Mb Cirrus Logic CL-GD5446 PCI (QEMU)
  30. VBE 2.00 PCI 4Mb Plex86 VBE Adapter (QEMU/Bochs)
  31. VBE 1.02 INTERNAL 1Mb Cirrus Logic CL-GD5428
  32. VBE 1.02 VLB 1Mb Cirrus Logic CL-GD5428
  33. VBE 1.02 INTERNAL 512Kb Cirrus Logic CL-GD5424

Driver troubleshooting


When you have problems with VBEMP, there are two basics scenarios:

  1. Computer starts, but driver is not working properly.
  2. Computer not starts, i.e. crashes, having BSOD or "hang".

Before debugging try these actions, provided below:

  1. Physically remove memory chips or uses /MAXMEM boot.ini's switch to do it in this manner (if you have 1024 Mb RAM): 512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 8.
  2. Upgrade motherboard's BIOS to the latest version.
  3. Clear CMOS settings to default or safe.
  4. Decrease AGP Aperture in BIOS as it is unused by VBEMP.
  5. Temporarily remove any external conrollers as: usb, sound, hdd, lan or others.
  6. Try a videocard with another bus: AGP, PCIe, PCI, onboard.

To start debugging process you MUST request a DEBUG-version of driver from me by e-mail. Here are the solutions in brief:

  1. Use Microsoft Windows 9x x86 32-bit Debugging Tools to trace debug logging information from the driver via serial port:
    OR Install debugging components only from here: http://bearwindows.boot-land.net/deb9xkit.rar (Win9x/ME only).

    Connect two PC's using this nullmodem serial cable:
    MSKB: How to set up a remote debug session using a null modem cable (Q151981)
    
    9-Pin NULL Modem Cabling
    
    Remote host
    serial port connector Host system
    serial port connector
    
    Signal
    3  2  Transmit Data
    2  3  Receive Data
    7  8  Request to Send
    8  7  Clear to Send
    6, 1  4  Data Set Ready and Carrier Detect
    5  5  Signal Ground
    4  6, 1  Data Terminal Ready
    
    25-Pin NULL Modem Cabling
    
    2  3  Transmit Data
    3  2  Receive Data
    4  5  Request to Send
    5  4  Clear to Send
    6  20  Data Set Ready and Carrier Detect
    7  7  Signal Ground
    20  6  Data Terminal Ready
    
    On host PC - copy rterm.exe (or rterm98.exe) from target PC. After that create shortcut for it onto Windows 9x desktop.
    Firstly, connect two PC's via serial cable.
    Secondly, start host PC and execute rterm.exe.
    Then start target PC. It will be started in debugmode. If target PC hangs, exit from rterm.exe on debugger PC and send vbe.log to me.

After you produce logs from driver you can give me additional information about your system and video adapter. This step is optional!!! Without driver logs this information is meaningless for me!!!

  1. Collect VESA BIOS and system information :

  2. For ISA/VLB card owners: There are new tools - lfb_det.exe/lfb.exe, which can automaticly detect linear frame buffer address of your card in system address space. They are distrubuted only by request via e-mail. Read pp.3 ("Collect system information"), make logs and I will send you these tools.


VBE FAQ: VESA BIOS Extensions standard deviation list

Cards (chips) affected

Description

Intel 845G, 855G, 865G, 915G and later

PRB: Cannot set native resolutions i.e. 1024x600, 800x480, 1280x800, mostly on notebooks with Intel integrated graphics.
DETAILS: In Video BIOS - mode tables these non-standard modes are absent or filtered. When you try to ask BIOS to set it, BIOS returns an error.
FIX: Update your BIOS with latest version or patch it. In DOS/Windows9x it is possible to use software Intel TSR VBIOS VESA-driver.

Intel 845G, 855G, 865G, 915G and later

PRB: Cannot set resolution higher than 800x600x8bits and 640x480x16bits.
DETAILS: In Video BIOS frame buffer size hardwired to 832 Kbytes, which is not enough even for 1024x768x16bit = 1024*768*2 = 1572864, 1572864 > 832K.
FIX: Update your BIOS with latest version or patch it. In DOS/Windows9x it is possible to use software Intel TSR VBIOS VESA-driver.

Intel 810E, 815E series

PRB: Cannot use linear frame buffer, but card identifies itself as VBE 3.0 compatible.
DETAILS: In Video BIOS linear frame buffer support is absent, but card itself supports linear frame buffer.
FIX: None known.

ATI Radeon Xkkkk series (starting with X700)

PRB: Cannot use custom screen refresh rates, but card identifies itself as VBE 3.0 compatible.
DETAILS: In Video BIOS screen refresh rates switching code is absent. When you try to ask BIOS to set it, BIOS immediately returns VBE error 0x34F.
FIX: None known.

nVidia GeForce 5xxx/6xxx/7xxx (and newer ones)

PRB: Cannot use custom screen refresh rates, but card identifies itself as VBE 3.0 compatible.
DETAILS: In Video BIOS screen refresh rates switching code is changed. When you try to ask BIOS to set it, BIOS always sets default refresh (60 Hz).
FIX: None known.

nVidia GeForce 5xxx/6xxx/7xxx (and newer ones)

PRB: Cannot set any resolution higher than 800x600.
DETAILS: In Video BIOS - mode tables 1024x768 modes and higher are absent or filtered. When you try to ask BIOS to set it, BIOS returns an error.
FIX: Update your BIOS with latest version or patch it.

VESA 1.x cards

PRB: When accessing fullscreen textmode, computer "hangs".
DETAILS: In Video BIOS mode-set routines are badly written for calling them in 32 bit protected mode.
FIX: None known. In DOS/Windows9x it is possible to use software VESA-driver.

Different VESA cards

PRB: When calling VBE functions, highword bits of EAX register and may be others (i.e. 0x????0000) may contain garbage.
DETAILS: In Video BIOS VESA routines are badly written for calling them using 32 bit registers.
FIX: Filter highword bits of EAX.




Project history



Changelog


[!] Important
[+] New
[-] Fixed error
[*] Changes
[?] Comments

2007.12.06
[!] first version is made based on framebuf.drv windows 95/98 ddk sample code

2007.12.08
[!] vesa cleanup in code

2007.12.16
[-] 0xC0000000-0xCFFFFFFF region now included in lfb search
[-] 16 bit color alignment corrected from 5-5-5 to 5-6-5

2007.12.26
[+] lfb now detected faster and automatically via vesa bios call
[-] 640x400x8 and 800x600x8 modes are corrected

2008.03.08
[+] in some intel chips 1600x1200 and 1920x1440 modes are enabled
[-] fixed nonexistent mode 0x100 640x400x8 for intel/cirruslogic chips

2008.03.13
[*] screen is cleared now before 4f02/int10
[+] separate versions for bochs/virtualbox/vmwareii

2008.03.15-16
[+] 320x240,512x384,400x300 lowres modes added
[+] in uni-version modelist size is 80 modes (which will be enough)
[-] lfb memory top fixed at 15mb (which will be enough) - was 8
[-] fixed option when videomodeptr list is stored in ROM (c000:yyyy)
[-] hiword of lfbsize expanded from byte to word
[-] modelist size calculated accurately
[-] vbemp.inf is corrected according to uni-version
[-] 15bit modes support removed
[-] in matrox cards 15bit modes shown as 16bit(5:5:5) - filtered

2008.03.22
[*] "uni" version: vesa detection code optimized
[*] "uni" version: drv/vxd in process being prepared to mtrr/uswc support
[*] "uni" version: vram memory cropped to 15 mb
[*] "uni" version: fixed overflow when computing offscreen ram *
[*] "uni" version: * accessible vram in theory must be less than 256 mb

2008.03.23
[*] "uni" version: debug info stripped
[*] "uni" version: 10 new videomodes added
[*] "uni" version: vesa 1.x cards now treated as unsupported
[*] "uni" version: vesa cards with < 1 mb vram are untested
[*] "uni" version: any mode listed in driver's inf will be enumerated

2008.10.21
[*] "uni" version: 800x480 and/or 1024x600 modes now supported (for ASUS EEE PC)
[*] "uni" version: TSR VBIOS support
[!] "uni" version: for full ASUS EEE PC support TSR VBIOS is REQUIRED (included with driver)
[*] "uni" version: VESA functionality in dos disabled when you start program in windowed mode
[-] "uni" version: With some buggy BIOSes screen garbage when starting dos or windows console programs in windowed mode
[!] "uni" version: accessible vram limited to 128 mb if it is greater than 128 mb

License


VBEMP x86 driver Project *
License for use and distribution

* term abbreviated to VBEMP below.

  1. The authors - Bearwindows and AnaPa Corporation, exclusively own all copyrights to VBEMP.
  2. Anyone may use this software free for noncommercial use only.
  3. The VBEMP, may be freely distributed, with exceptions noted below, provided the distribution package is not modified. No person or company may charge a fee for the distribution of VBEMP without written permission from the copyright holder. The VBEMP may not be bundled or distributed with any other package without written permission of the copyright holder. Distribution of any VBEMP version before 10/19/2007 or unauthorized site content mirroring is strictly prohibited.
  4. VBEMP IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE. THE LICENSE TERMS CONTAINED IN THIS DOCUMENT ARE SUBJECT TO BEING CHANGED, WITHOUT NOTICE, IN FUTURE EDITIONS.
  5. You may not use, copy, emulate, clone, rent, lease, sell, modify, decompile, disassemble, otherwise reverse engineer, or transfer the licensed program, or any subset of the licensed program, except as provided for in this agreement. Any such unauthorized use shall result in immediate and automatic termination of this license and may result in criminal and/or civil prosecution.
  6. Bearwindows and AnaPa Corporation reserve all rights not expressly granted here.
  7. Installing and using VBEMP signifies acceptance of these terms and conditions of the license.
  8. If you do not agree with the terms of this license you must remove VBEMP files from your storage devices and cease to use the product.

Thank you for using VBEMP.

Bearwindows and AnaPa Corporation


Direct3D, DirectDraw, DirectShow, DirectX, Microsoft, MS-DOS, Visual C++, Win32, Win32s, Windows, Windows XP, Windows 2003 Server and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries/regions.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

© AnaPa Corporation 1988 – 2009. All rights reserved.

E-Mail: bearwindows_at_operamail_dot_com | Last update: March 1st 2009

1