VOGONS


First post, by clb

User metadata
Rank Member
Rank
Member

Before VESA came along, different video hardware vendors adopted all kinds of different custom video modes.

I found http://www.columbia.edu/~em36/wpdos/videomodes.txt that lists many of these modes.

I am looking to explore this space a bit more for programming these modes from real mode programs.

The main thing I am curious is: how common were video cards that had custom modes, but did not yet support VESA VBE 1.0, 1.1 or 1.2? Or did software like UniVBE practically encompass all the display cards by adding software wrapped support for all of these custom not-yet-VESA-standardized modes that each adapter had?

For example, if I look at the above list and the mode

58h = G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426

on my Cirrus Logic GC-5422 video card, I understand that is *not* a VESA VBE video mode. But is initializing that video mode identical to having used VESA VBE 1.x services to initialize the video mode? (and that's what the UniVBE driver ends up doing anyways?)

Also I am curious if people know about different pre-VESA display adapter programming manuals, e.g.
- scanned programming manuals of different video hardware vendors that would "officially" list their expansions to the CGA/EGA/VGA modes,
- official resources from vendors on how the presence of their VGA display adapter should be identified?
- unofficial ways to identify different graphics cards (parse strings or magic ID addresses from VGA BIOS memory? run some vendor-specific custom IO port writes/reads?)

Thanks!

Reply 1 of 18, by darry

User metadata
Rank l33t++
Rank
l33t++

VBE (VESA BIOS EXTENSIONS) provide a standard (graphic chip model/manufacturer agnostic) way to initialize and use graphics modes (bits per pixel, resolutions, refresh rates, timings, etc) selectable from a list. The modes available in a given situation will vary due to hardware limits and VBE implementation .

VBE can either be made available through a TSR (like UNIVBE) or by being integrated in a graphics card's video BIOS ROM . In both cases, the calls made to the VBE are translated to hardware specific commands that can be completely different between video chipsets. Think of VBE as an abstraction layer that exposes a standardized API or as a middleware of sorts.

Please note that something like UNIVBE needs to implement hardware specific support for multitudes of graphics chips that all need to be "spoken to" differently. This is a non-trivial task.

Prior to VBE, programs had to either support writing to video chip registers or use a vendor specific interface (like the 8514 AI for 8514/A adapters) implemented either in a custom VGA BIOS or as TSR .

In addition, to VBE, VESA standardized video mode timings, which made it much easier to pair display adapters to monitors while minimizing manual tweaking . Please note that a video card can be initialized to output a video mode that matches a VESA defined one without there being any VBE functionality used or even present .

https://en.m.wikipedia.org/wiki/Video_Electro … rds_Association

Reply 2 of 18, by EduBat

User metadata
Rank Newbie
Rank
Newbie

Hi
I think you are going to like the "Programmer’s Guide to the EGA, VGA, and Super VGA Cards (3rd Edition)" which you can get from here: https://www.pcjs.org/documents/books/programming/
Lots of interesting information with details about the super vga cards and how to program them.
Good luck

Reply 3 of 18, by clb

User metadata
Rank Member
Rank
Member
EduBat wrote on 2022-10-09, 23:51:
Hi I think you are going to like the "Programmer’s Guide to the EGA, VGA, and Super VGA Cards (3rd Edition)" which you can get f […]
Show full quote

Hi
I think you are going to like the "Programmer’s Guide to the EGA, VGA, and Super VGA Cards (3rd Edition)" which you can get from here: https://www.pcjs.org/documents/books/programming/
Lots of interesting information with details about the super vga cards and how to program them.
Good luck

Perfect, this is an amazing treasure trove of information! Exactly what I was looking for.

darry wrote on 2022-10-09, 23:05:

VBE can either be made available through a TSR (like UNIVBE) or by being integrated in a graphics card's video BIOS ROM .

Thanks, this is the part that I am interested about: i.e. how widely/completely does UniVBE cover all these custom Super VGA cards (that did not yet directly support VBE via their BIOS ROM) via a software interrupt TSR? Or do there commonly exist graphics cards that did have >640x480@16colors modes available, but there was no UniVBE software driver available for them?

I mean, probably nobody can an authoritative answer, so I suppose what I'm looking for are anecdotes of "I remember I got this old ISA card that UniVBE did not support at all, but it did have custom Super VGA modes available."

What I am specifically charting is ISA video cards that would support 640x480@256 colors modes, and 800x600@16 colors or even 800x600@256 colors modes. Though I suppose I should be able to answer that question on my own after a few weeks of digging in to my ISA graphics card collection and some time with the above book, and cross-referencing against the VESA stack.

Reply 4 of 18, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

IIRC, UniVBE didn't support cards with only 256KB. They basically said "it needs at least 512KB to count as SVGA." But I think 800x600 16-color (often interlaced) is pretty common even on cards with only 256KB. Vega VGA card can do it. WD90C00 can do it (and 640x400 256-color).

again another retro game on itch: https://90soft90.itch.io/shmup-salad

Reply 5 of 18, by rmay635703

User metadata
Rank Oldbie
Rank
Oldbie
bakemono wrote on 2022-10-10, 13:33:

IIRC, UniVBE didn't support cards with only 256KB. They basically said "it needs at least 512KB to count as SVGA." But I think 800x600 16-color (often interlaced) is pretty common even on cards with only 256KB. Vega VGA card can do it. WD90C00 can do it (and 640x400 256-color).

800x600 interlaced was actually quite uncommon and only had a few years of life before 1990 and included some fixed frequency screens.

800x600 56hz was very common and on many older SVGA screens you got a much brighter image using it vrs 60hz
Many screens could not come close to filling the viewable area at 60hz either

Reply 6 of 18, by darry

User metadata
Rank l33t++
Rank
l33t++
clb wrote on 2022-10-10, 11:57:
Thanks, this is the part that I am interested about: i.e. how widely/completely does UniVBE cover all these custom Super VGA car […]
Show full quote
darry wrote on 2022-10-09, 23:05:

VBE can either be made available through a TSR (like UNIVBE) or by being integrated in a graphics card's video BIOS ROM .

Thanks, this is the part that I am interested about: i.e. how widely/completely does UniVBE cover all these custom Super VGA cards (that did not yet directly support VBE via their BIOS ROM) via a software interrupt TSR? Or do there commonly exist graphics cards that did have >640x480@16colors modes available, but there was no UniVBE software driver available for them?

I mean, probably nobody can an authoritative answer, so I suppose what I'm looking for are anecdotes of "I remember I got this old ISA card that UniVBE did not support at all, but it did have custom Super VGA modes available."

What I am specifically charting is ISA video cards that would support 640x480@256 colors modes, and 800x600@16 colors or even 800x600@256 colors modes. Though I suppose I should be able to answer that question on my own after a few weeks of digging in to my ISA graphics card collection and some time with the above book, and cross-referencing against the VESA stack.

I can share some anecdotal memories that are nonetheless mostly verifiable.

- I had a Fujikama Trident TVGA8900 (B or C variant, probably B) based 1MB video card in 1992 (you have to trust me on this one 😉 )
- The above card had no VBE in its VGA BIOS (probably verifiable by checking ROM dumps from similar cards of the era)
- The card came with utilities that included custom, application specific, drivers to allow >VGA modes in Autocad, Ventura Publisher, Word Perfect, Windows 3.0 and probably others that I can't remember . AFAICR, this was common before VBE became more commonplace
- UNIVBE (might have been called UNIVESA at the time, AFAICR) did support the chipset/card

And now for some observations and conjecture on my part .

- When SVGA capable VGA chipsets started coming out, in pre-VBE days, chip vendors had to write (or possibly collab with major software vendor for this) application specific drivers or the >VGA functionality was pointless . In pre-VGA days, there were already applications that supported using drivers for proprietary high resolution/color display adapters, so the concept was not new

- When VBE support in software started becoming more widespread, not having VBE support would have played against a VGA chip vendor. I don't know the details, but I would not be surprised that VGA chip vendors were quite happy to assist Scitech in supporting their products in UNIVBE/UNIVESA, as it was a win for everyone (software got more supported HW at minimal cost through VBE use and licensing UNIVBE, Scitech made money and VGA chip vendors got more software working with minimal effort). Though pretty much all VGA chip vendors did eventually develop and integrate their own VBE code for their newer products, which mostly obsoleted UNIVBE .

- Consequently, I would guess that there probably were few (if any) SVGA capable chips that did not eventually get some level of VBE support either through UNIVBE/UNIVESA and/or the VGA chip vendor (not to mention third party freeware implementations).

Reply 7 of 18, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Here are some hardware specific VBE TSRs..

Re: OAK OTI-037c - 800x600 mode ?

They're limited, but work in situations that UniVBE fails.
Re: UNIVBE 4.0 and old hardware

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 8 of 18, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

I don't know about any SVGA cards with no VBE support at all.
But there was plenty of cards without VBE in ROM - instead it was provided via a TSR.
Such cards were mostly ISA, but I've also seen at least one VLB card with no ROM VBE: some Hercules card based on ET4000/W32i, with 2 MB of RAM.

In such cases it may be preferred to use card-specific video modes, rather than losing a few KB of DOS memory by loading the VBE TSR.
Have a look at some SVGA software, eg. QPV and VPIC - they do support VBE, but also contain drivers for chipset/card specific modes.

It should also be noted that there were graphics adapters better than VGA that weren't SVGA - 8514/A, TIGA, and others.
They were so different from VGA/SVGA it wasn't possible provide VBE support.

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.

Reply 10 of 18, by NJRoadfan

User metadata
Rank Oldbie
Rank
Oldbie

The Oak chips were notoriously lousy VGA cards. Of course Diamond in their infinite wisdom paired them with the Weitek P9000 on the Viper VLB AND screwed up the VBE implementation in the BIOS.

Pre-VBE, the standard seemed to be Tseng ET4000's enhanced modes and maybe IBM's 8514/A, which ATI cloned. 800x600 was an afterthought, IBM went directly to 1024x768 and only added 800x600 later on in the XGA cards.

Reply 11 of 18, by Riikcakirds

User metadata
Rank Member
Rank
Member

Did any games actually exist before december 1990 that used these custom svga modes (greater than VGA 640x480x16) but not vbe 1.0.
Or even were any games ever released that used VBE 1.0 , (released in 1989) up to december 1990.

Reply 12 of 18, by pan069

User metadata
Rank Oldbie
Rank
Oldbie
Riikcakirds wrote on 2023-08-31, 20:26:

Did any games actually exist before december 1990 that used these custom svga modes (greater than VGA 640x480x16) but not vbe 1.0.
Or even were any games ever released that used VBE 1.0 , (released in 1989) up to december 1990.

These modes weren't really designed with games in mind. They were mostly designed for business use cases like graphs in spreadsheets and CAD work. If I remember correctly, early DOS versions on 3DStudio supported various SVGA modes prior to the VBE spec. You must have been a very daring game developer/publisher back then to even attempt to support it for a game. Maybe there are some though...

Reply 13 of 18, by Geri

User metadata
Rank Member
Rank
Member
clb wrote on 2022-10-09, 21:42:

But is initializing that video mode identical to having used VESA VBE 1.x services to initialize the video mode?

No. Vesa vbe is not just about initialising the graphics mode. You also need to switch the video bank, get the size of the bank and so on. As at this time, it was not possible to map the entire video memory as a linear frame buffer, bank had to be switched after a certain kbytes of data.

When you initializing vesa, you getting a standard structure with these parameters.

Without these parameters, you have to assume how the card does these, which might accurate, might not, you certainly end up having to manual profiles for each and every manufacturers to do it.

TitaniumGL the OpenGL to D3D wrapper:
http://users.atw.hu/titaniumgl/index.html

Reply 14 of 18, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie
Riikcakirds wrote on 2023-08-31, 20:26:

Did any games actually exist before december 1990 that used these custom svga modes (greater than VGA 640x480x16) but not vbe 1.0.
Or even were any games ever released that used VBE 1.0 , (released in 1989) up to december 1990.

There were some shareware games with non-VBE SVGA support - eg. early versions of Scorched Earth had an option to use 640x480x256 on Paradise cards.
But I doubt if any such games existed in 1990 - the original release of Scorched Earth seems to be 1991.

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.

Reply 15 of 18, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Grzyb wrote on 2023-09-01, 01:37:
Riikcakirds wrote on 2023-08-31, 20:26:

Did any games actually exist before december 1990 that used these custom svga modes (greater than VGA 640x480x16) but not vbe 1.0.
Or even were any games ever released that used VBE 1.0 , (released in 1989) up to december 1990.

There were some shareware games with non-VBE SVGA support - eg. early versions of Scorched Earth had an option to use 640x480x256 on Paradise cards.
But I doubt if any such games existed in 1990 - the original release of Scorched Earth seems to be 1991.

Hm. Simulation games like MS Flight Simulator or Sim City, maybe? 🤷‍♂️

Edit: FS4 was released in '89, but got updates/addons in the following years.
Not sure if it fits in the picture here.

The original SVGA mode was 800x600 in 16c, which adventure games from Legend Entertainment and Magnetic Scrolls had used (past 1990).

That was the original purpose of VBE, also, to provide a standard initialization for 800x600 16c (as VGA mode 6Ah, later as VBE mode 102h; initial standard was #VS890401 of August '89).

In terms of gaming, 640x400 in 256c was of relevance, also (VBE mode 100h).

Because, both 640x400 256c and 800x600 16c work fine with first gen ISA VGAs.
These modes work with the basic VGA memory of 256 KB and are monitor friendly.

The 640x400 mode works with any "single-frequency" monitor that can handle 320x200 70 Hz and 640x480 60 Hz.

While 800x600 resolution is using 56 Hz and interlacing, depending on the DIP switch settings on the VGA card.

So both resolutions can work with the technology available to users in 1987-1990.

The irony is, that 800x600 wasn't the first choice here.
IBM had favored 1024x786 in 256c way back in 1987, when PS/2 and OS/2 and the 8514/A were in development.

In retrospect, the whole Super VGA thing was a compromise, essentially.
It also had its roots in the EGA clones, which had supported 800x600 as an extended resolution before (sometimes called Super EGA).

In theory, those enhanced EGA cards had the ability to support what became Standard VGA and Super VGA, if there had been a VBE like TSR at the time.
The 16 colour modes of both of them are more or less derived from Standard EGA (640x350 16c, mode 10h).

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 16 of 18, by Riikcakirds

User metadata
Rank Member
Rank
Member

So I found one game that uses SVGA < december 1990. Wonderland has a 800x600x16 mode. The readme says 800x600 only on PVGA1A and V7 VEGA cards.
Yet I can still run it in 800x600 in real dos on a much newer modern nvidia gf4ti. How is that working, surely the 800x600 mode registers are different with the cards.

Reply 17 of 18, by Gmlb256

User metadata
Rank l33t
Rank
l33t
Riikcakirds wrote on 2023-09-01, 23:18:

So I found one game that uses SVGA < december 1990. Wonderland has a 800x600x16 mode. The readme says 800x600 only on PVGA1A and V7 VEGA cards.
Yet I can still run it in 800x600 in real dos on a much newer modern nvidia gf4ti. How is that working, surely the 800x600 mode registers are different with the cards.

Simple, by using internally the VESA equivalent (102h) in the VBIOS when setting video mode 58h (PVGA1A) and it doesn't require bank switching. Certain vendors did that trick as it was handy.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 18 of 18, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Yes, 800 x 600 x 16 is the only SVGA mode that can be supported without any chip/card-specific code, even without VBE.
It's like the standard VGA 640 x 480 x 16 mode: 4 bitplanes, and fitting in the 64 KB segment, so no need for bank-switching.
The only difference is the number used to initialize the mode: 640 x 480 x 16 = 12h, 800 x 600 x 16 = 58h for Paradise and some other video BIOSes, I guess including that Nvidia...

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.