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


VBEMP 9x Project
Universal VESA/VBE Video Display Driver
(for Windows 9x 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

Release version beta
2014.02.14

Universal VBE20 version. *

[?],[?],[?]

Windows 9x clones - ALL of them

Release version beta
2014.01.31

Universal VBE20 version. *

[?],[?],[?]

Windows 9x clones - ALL of them

Release, debug version pre-beta
2010.06.01

Universal VBE20 version. *

[?],[?],[?]

Windows 9x clones - ALL of them

Release, debug version pre-beta
2008.10.21

Universal VBE20 version. *

[?],[?],[?]

Windows 9x clones - ALL of them

Release version pre-beta
2008.03.23

Universal/Manual VBE20 version. *

[?],[?],[?]

Windows 9x clones - ALL of them

Original source code

FRAMEBUF sample from Windows 9x DDK. Compile it with MASM 6.x.
http://www.mdgx.com/add.htm#DDK

98DDK.RAR

* 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: Version dated 2014.01.31 and later, 140131.zip contains these variants of VBEMP driver:

"UNIVERSAL": if one version is not working correctly with your card try another or vice versa....

Special folders:

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 2004-2014, Anapa Corp.

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

 . . . . . .
[Mfg]
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc1% = PCIVID, PCI\CC_0300
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc2% = PCIVID, PCI\CC_0301
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc3% = PCIVID, PCI\CC_0380
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc4% = VGA, *PNP0900
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc5% = VGA, *PNP0917
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc6% = VGA, NOPNP
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc7% = PCIVID, NOPNP
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc8% = PCIVID, PCI\VEN_1002&DEV_5046
%AnaPa.DeviceDesc%%AnaPa.DeviceDesc9% = PCIVID, PCI\VEN_1002&DEV_4966&SUBSYS_4F721002
%AnaPa.DeviceDesc%%AnaPa.DeviceDescA% = PCIVID, PCI\VEN_1002&DEV_4963&SUBSYS_4F731002
%AnaPa.DeviceDesc%%AnaPa.DeviceDescB% = PCIVID, PCI\VEN_8086&DEV_2562&SUBSYS_52478086
%AnaPa.DeviceDesc%%AnaPa.DeviceDescC% = PCIVID, 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 (reserved by Microsoft)"
AnaPa.DeviceDesc6 = " - VGA Compatible"
AnaPa.DeviceDesc7 = " - VGA Compatible (no resources)"
AnaPa.DeviceDesc8 = " (ATI Rage 128PRO 4x pri)"
AnaPa.DeviceDesc9 = " (ATI RV250 pri)"
AnaPa.DeviceDescA = " (ATI RV250 sec)"
AnaPa.DeviceDescB = " (Intel D845G)"
AnaPa.DeviceDescC = " Your card name"
 . . . . . .

To create this string you may use Craig Hart's 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
 . . . . . .

Installation note 4: If you trying to use VBEMP driver with ISA/MCA/VLB card in most cases you must play with the following BIOS Setup options:

so system memory will not crossover with videocard's memory.

Screenshots. VBEMP 9x Project in work :)



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.DRV
    \%WINDOWS_DIR%\SYSTEM\VBEMP.VXD 
    \%WINDOWS_DIR%\INF\VBEMP.INF
    
  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_yyyy&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 ([?],[?],[?])


Tested video cards/chipsets


  1. VBE 3.00 INTERNAL Intel G43 Graphics
  2. VBE 3.00 INTERNAL Intel Q963 (GMA 3000) Graphics
  3. VBE 3.00 INTERNAL Intel 946GZ Graphics
  4. VBE 3.00 INTERNAL Intel 945G Graphics
  5. VBE 3.00 INTERNAL Intel 915G Graphics
  6. VBE 3.00 INTERNAL Intel 82865G Graphics
  7. VBE 3.00 INTERNAL Intel 82845G Graphics
  8. VBE 2.00 AGP 8Mb ATI Rage 3D Pro AGP 2x (BGA Package)
  9. VBE 2.00 AGP 8Mb ATI Rage P/M Mobility AGP 2x
  10. VBE 2.00 AGP 32Mb ATI Rage128 PF/Pro AGP 4x (TMDS)
  11. VBE 2.00 AGP 64Mb ATI Radeon 9000 Series (RV250)
  12. VBE 2.00 INTERNAL ATI Radeon Xpress 200M Series
  13. VBE 3.00 16Mb? ATI Radeon X1650 Series (RV530 LE)
  14. VBE 3.00 16Mb? ATI Radeon X1950 GT [RV570]
  15. VBE 3.00 AGP 16Mb 3Dfx Interactive Voodoo3 2000
  16. VBE 3.00 PCI 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  17. VBE 3.00 AGP 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  18. VBE 3.00 AGP 16Mb nVidia RIVA TNT GUI+3D Accelerator [NV4]
  19. VBE 3.00 AGP 16Mb nVidia RIVA TNT2 Model 64 [NVM64]
  20. VBE 3.00 AGP 32Mb nVidia GeForce2 MX/MX400 [NV11]
  21. VBE 3.00 AGP 64Mb nVidia GeForce2 GTS/PRO [NV15]
  22. VBE 3.00 AGP 64Mb nVidia Geforce3 Ti 200 [NV20]
  23. VBE 3.00 AGP 128Mb nVidia GeForce FX 5200 [NV34.3]
  24. VBE 3.00 INTERNAL nVidia GeForce 6100 nForce 430
  25. VBE 3.00 nVidia GeForce 7600GS
  26. VBE 2.00 PCI 4Mb Matrox MGA-2164W Millenium II PCI
  27. VBE 2.00 AGP 4Mb Matrox MGA-G100 AGP
  28. VBE 2.00 PCI 4Mb TSENG LABS Inc ET6000
  29. VBE 2.00 PCI 2Mb S3 Inc 86C375 ViRGE/DX
  30. VBE 2.00 AGP 4Mb S3 Inc 86C368 Trio3D/2X
  31. VBE 2.00 INTERNAL Trident CyberBlade i7
  32. VBE 2.00 PCI 8Mb? VirtualBox VBE Adapter (Innotek VirtualBox)
  33. VBE 2.00 PCI 16Mb VMware SVGA II (VMware)
  34. VBE 2.00 PCI 4Mb Cirrus Logic CL-GD5446 PCI (QEMU)
  35. VBE 2.00 PCI 4Mb IBM Plex86/Bochs VBE Adapter (QEMU/Bochs)
  36. VBE 1.02 INTERNAL 1Mb Cirrus Logic CL-GD5428
  37. VBE 1.02 VLB 1Mb Cirrus Logic CL-GD5428
  38. 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 (note that with more than 512 Mb RAM Windows 9x may not work correctly without special preparation): 512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 8.
  2. Or enter this line MaxPhysPage=20000 into section [386enh] of system.ini file, limiting accessible RAM to 512 Mb.
  3. Upgrade motherboard's BIOS to the latest version.
  4. Clear CMOS settings to default or safe.
  5. Decrease AGP Aperture in BIOS to lowest value as it is unused by VBEMP.
  6. Temporarily remove or disable in BIOS any devices, external controllers such as: usb, sound, hdd, lan or others.
  7. 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:

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 automatically detect linear frame buffer address of your card in system address space. They are distributed 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

2010.06.01
[*] "uni" version: VESA functionality in dos restored

2014.01.31
[+] "uni" version: support for new resolutions
        dw      832,624   ; MAC, 4:3
        dw      1366,768  ; Widescreen
        dw      1440,900  ; Widescreen, VirtualBox
        dw      1600,900  ; Widescreen
        dw      1920,1080 ; Widescreen, VirtualBox
        dw      1920,1200 ; semi-Widescreen
        dw      2560,1440 ; Widescreen
        dw      2560,1600 ; Widescreen
[+] "uni" version: support for "missed" resolutions
        dw      320,400   ; most ATI, nVidia
        dw      640,350   ; most ATI
        dw      720,400   ; most ATI
        dw      720,480   ; S3 AGP
        dw      720,576   ; S3 AGP
        dw      1280,960  ; VMWare SVGA II
        dw      1400,1050 ; VMWare SVGA II, ATI, nVidia
        dw      1792,1344 ; VMWare SVGA II
        dw      1856,1392 ; VMWare SVGA II, ATI
        dw      2048,1536 ; most nVidia
[*] fixed aspect ratios table
[*] support for adding ANY new modes to these Intel video chips -
    830/845/85x/865/91x/94x/96x/G3x/G4x Graphics
    via patching and running TSR VESA BIOS (source included, inteldmp)
    run it before running win9x shell
    note that you cannot add new modes only replacing old ones (modenum < 0x60)
    (based on 915resolution patch)
[!] memory limited versions 32/64/128mb (fixes startup hangs)
[-] PCI/AGP/PCIe adapter does not have predefined resources!, vbemp.inf modified

2014.02.14
[+] "uni" version: support for new resolutions
        dw      1280,600  ; Widescreen
        dw      1280,720  ; Widescreen, 720p (WXGA-H, min.)
        dw      1280,768  ; Widescreen, Wide XGA avg., BrightView (WXGA)
        dw      1360,768  ; Widescreen, alternate mode for 1366x768
        dw      1680,1050 ; Widescreen, (WSXGA+)
[*] inteldmp: added support for these Intel video chips - HD/HD2000/HD2500/HD3000/HD4000 Graphics
[*] inteldmp: compatible with gcc/djgpp (you must use 1 byte align!)
[*] inteldmp: aligns video bios checksum

License


VBEMP 9x 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 – 2014. All rights reserved.

E-Mail: bearwindows_at_operamail_dot_com | Last update: February 14th 2014