• Please review our updated Terms and Rules here

Why was VGA 640x480 w/256kb ?

I wonder why IBM didn’t offer a “3 color” mode instead of plain monochrome on MCGA.

3 colors can be driven with 3 bits for every 2 pixels (-1 config) or 8 bits for every 5 pixels (pixel accurate) which is 60kb of VRAM

Similarly 640x480 should support 64 colors (6bit depth) using less than 256k with a speed penalty
Probably because those would make the hardware more complicated for a not-terribly-great benefit. The first one is just plain weird, while the second is more normal, except that the EGA (and by extension VGA) hardware only supports four bitplanes, and 6-bit chunky pixels would just be awkward to work with.
 
As I also pointed out, 640x400 would not have left half the memory available for double buffering. You would see the updates on-screen with 256K. Not that useful for any mode.
Let's not exaggerate about the necessity of double-buffering.
There's no double-buffering on CGA, but still, there's plenty of software for CGA, including games.
There's no double-buffering with VGA 640x480x16, and there's plenty of software using this mode.
I don't know when usage of double-buffering became prevalent, but I would guess it was in the 3D era.
 
640x400x256 was a “SVGA” mode available on many 256kb #7 graphics cards under Windows 3.x
One of the lab computers used this mode at school,
256 colors was much easier to work with than 16
while making classic HTML web pages (circa 1996) on Win 3.11
That machine was a popular one to sit at because most of the antiques only had VGA 640x480x16 making color matching tough.

However in dos , it was rare to see 640x400 listed in software let alone be usuable,
It was basically a Windows only mode
 
I usually associate that SVGA 640x400x256 mode with Links 386 Pro - one of the first SVGA games, a notable thing even for those who weren't interested in golf, as it featured "photo-realistic" graphics (well, according to the standards of that era...).
 
Let's not forget the other huge benefit of a 640x480 resolution: square pixels at a 4:3 aspect ratio. Before VGA, it was common for PC pixels to be taller than they were wide, so graphics displayed on screen would appear squashed when printed, and scaling your bitmaps to print correctly would make them appear squished on-screen. This made desktop publishing and WYSIWYG editors more difficult to implement on PCs. Compare this to the Macintosh which had square pixels from the start.

I would not be at all surprised if IBM specced VGA to have square pixels precisely because it wanted to compete in the desktop publishing market.
 
This is also the reason why a standard IBM VGA card cannot do a 640x400x256 mode: there is enough VRAM for it, but the VGA chipset can't transfer data out of VRAM and pass it to the DACs quickly enough.

Well... it can, actually, but you need a good multisync monitor. Here's some fun from back when I was writing VGA tweak articles for demonews:

Code:
3c2 (00)             Misc. output : 6b
3d4 (00)             Horiz. total : ad
3d4 (01)  Horiz. disp. enable end : 9f
3d4 (02)       Horiz. blank start : 9f
3d4 (03)         Horiz. blank end : 89
3d4 (04)     Horiz. retrace start : a0
3d4 (05)       Horiz. retrace end : 06
3d4 (06)           Vertical total : bf
3d4 (07)        Overflow register : 1f
3d4 (08)          Preset row scan : 00
3d4 (09)   Max scan line/char ht. : 60
3d4 (10)   Vertical retrace start : 9c
3d4 (11)     Vertical retrace end : 8e
3d4 (12)   Vert. disp. enable end : 8f
3d4 (13)     Offset/Logical width : 50
3d4 (14)       Underline location : 00
3d4 (15)     Vertical blank start : 96
3d4 (16)       Vertical blank end : b9
3d4 (17)             Mode control : e3
3c4 (01)      Clock mode register : 01
3c4 (03)    Character gen. select : 00
3c4 (04)     Memory mode register : 06
3ce (05)            Mode register : 40
3ce (06)   Miscellaneous register : 05
3c0 (10)             Mode control : 41
3c0 (11)     Screen border colour : 01
3c0 (12)       Color plane enable : 0f
3c0 (13)       Horizontal panning : 00
3c0 (14)             Color select : 00

640x400 256 planar. Bonus points if you can derive the refresh rates from this (which explains why it must have a multisync monitor).
 
Ahh, so it's the same story as with the 800x600x16 - perfectly possible on a regular VGA, but at 29.3 kHz / 45 Hz, ie. rather useless. But it did work on my "30+ kHz" monitor.
 
640x400 256 planar. Bonus points if you can derive the refresh rates from this (which explains why it must have a multisync monitor).

Ooo let's see... Pixel clock of 25.175MHz divided by 8*(0xad + 5)*(0x1bf + 2) == 39.37Hz. You'd need a good supply of ibuprofen as well as the multisync!
 
Ooo let's see... Pixel clock of 25.175MHz divided by 8*(0xad + 5)*(0x1bf + 2) == 39.37Hz. You'd need a good supply of ibuprofen as well as the multisync!

I’m not sure if that’s correct,

My Tandy 1000rlx would output 720x400 resolution under specific circumstances to a bog standard Tandy 14” VGA monitor at 72hz

I would guess if blanking occurred on the 40 left and right columns 640x400 should be possible @72hz as well

The adapter in the system was not SVGA so not sure how that worked unless it was just the lower bandwidth requirements of a particular text mode.
 
IBM VGA text mode worked out to be 720x400. Since 1000RLX has VGA, it has to have that mode. Now if the RLX was also pumping out graphics in that mode, I will be impressed.
 
A video mode can be setup any number of ways, and is partly a function of the bios. Look at all the different modes created with the 6845/6545. Many computers and cards us d them, and many didn't resemble cga/MDA at all.
 
IBM VGA text mode worked out to be 720x400. Since 1000RLX has VGA, it has to have that mode. Now if the RLX was also pumping out graphics in that mode, I will be impressed.

Didn't the Hercules Incolor card do 720 X 400? Can't remember if it was text or graphics. Perhaps just the standard mds/hercc text. It was neither vga nor ega, but had similar modes to ega I think.
 
Ooo let's see... Pixel clock of 25.175MHz divided by 8*(0xad + 5)*(0x1bf + 2) == 39.37Hz. You'd need a good supply of ibuprofen as well as the multisync!

AND INDEED I DID. There was also an unholy, audible whining noise from the flyback transformer. But it worked!

VGA was fun to play with. I was introduced to some tweakmodes via the paint program ColoRIX (who implemented unchained modes in 1988, IIRC, before anyone else) and always thought the 360x480 mode included with that program was neat. Some of my other favorite modes:

256x256 chained (BH + BL for indexing, no MUL or tables required)
320x240 unchained (square pixels, 60Hz, and triple buffering, although triple-buffering turned out to be much less useful in practice than I'd hoped)
320x400 unchained (double the res, two video pages, 70Hz refresh rate was easy on the eyes)
360x270 unchained (square pixels, two video pages with ~67KB left over)

My least favorite mode: 360x360. Aspect ratio all screwy, no real advantage over other modes in any way

Didn't the Hercules Incolor card do 720 X 400? Can't remember if it was text or graphics. Perhaps just the standard mds/hercc text. It was neither vga nor ega, but had similar modes to ega I think.

All of the color modes on the InColor card were 16 colors.
 
Ooo let's see... Pixel clock of 25.175MHz divided by 8*(0xad + 5)*(0x1bf + 2) == 39.37Hz. You'd need a good supply of ibuprofen as well as the multisync!

Btw, if you used the 28.322MHz clock then you'd get up to 44.3Hz.

I don’t think bandwidth within the VGA card was an issue, perhaps CPU bandwidth since even 150k pages at the time were large but you can bank 16 bits into 128k of ram just as easily as you can bank 8 bits with 256k chips

I can point out several 128kb VGA cards and one 160kb VGA card so it’s physically possible to build a VGA card with less memory

The DRAM chips on my original IBM VGA card are 41464C-12. This has a minimum access cycle time of 220ns, which works out as 5.54 high-resolution pixels. There are 8 of these chips, each of which has 4 bits in parallel, so it can transfer 32 bits in a cycle. Over the course of 32 high-resolution pixels (128 bits of data) we get 5 access cycles and we need 4 to feed the CRT so there is enough time for a CPU access as well. If we tried to double the VRAM bandwidth, we'd need have to use faster chips, which might have been unavailable (or uneconomical) in 1987, though perhaps it could have been done with fewer faster chips by the time the 128kB and 160kB cards that you're talking about were available.
 
I’m not sure if that’s correct,

My Tandy 1000rlx would output 720x400 resolution under specific circumstances to a bog standard Tandy 14” VGA monitor at 72hz

I would guess if blanking occurred on the 40 left and right columns 640x400 should be possible @72hz as well

The adapter in the system was not SVGA so not sure how that worked unless it was just the lower bandwidth requirements of a particular text mode.

Well yes, standard VGA text mode is 720x400 at 70Hz so that's not too surprising. But the video bandwidth requirements for text mode and 16 colour graphics modes are less than that of 256 colour graphics modes at a given resolution, so being able to do 720x400 at 70Hz in text mode or 16 colour graphics mode doesn't mean you can do 720x400x256 at 70Hz as well.
 
Back
Top