When running old DOS games, you often have to manually select which type of graphics adapter you use. Some games allow you to select VGA for 256 colour mode. Others use the term MCGA for 256 colour mode, and some just call it VGA/MCGA. So what is it exactly?
I suppose the real question is: What is MCGA? Because VGA will probably be familiar to you, as it’s been such an influential standard in PC history for many years. MCGA on the other hand, is somewhat obscure.
In short, it’s all IBM’s fault. We have to go back to 1987, when IBM introduced their PS/2 line of products. VGA (Video Graphics Array) was the new graphics standard they introduced for the PS/2. However, IBM also introduced some low-end models in the PS/2 line, which did not quite have the same specs. One obvious difference is that the low-end models used the legacy ISA bus instead of the new MCA bus. Another difference is that the entry-level model, the Model 30, did not get VGA, but MCGA (Multi-Color Graphics Array) instead. A few months later, another low-end model, the Model 25 was introduced, also with MCGA.
So our first clue is that MCGA is an entry-level graphics solution, where VGA was for the models higher up in the range. I would like to describe MCGA as CGA with a minimal implementation of VGA’s 320×200 256-colour mode (mode 13h) and 640×480 monochrome mode (mode 11h).
Yes, CGA. Where VGA is a superset of EGA, MCGA is not. In other words, MCGA is backwards-compatible with CGA, but not with EGA. MCGA has 64k of memory, instead of the 256k that VGA has. This is barely enough for a single framebuffer in 320×200 256-colour mode.
You could say it is BIOS-compatible with VGA’s mode 13h: it works the same when setting the mode via a BIOS call, and the framebuffer is at segment A000h, just like with VGA. It also supports the same palette registers. But that is exactly where the similarities end.
VGA has all sorts of extra functionality (the majority of which is carried over from EGA), such as hardware scrolling, an ‘unchained’ mode that allows access to the full 256k of memory, and an ALU that can perform various operations when reading or writing, such as rotating and masking pixels. MCGA has none of that. VGA also introduced some 640×480 modes, in monochrome (mode 11h) and 16 colours (mode 12h). Because of the 64k memory limitation, MCGA only supports the monochrome 640×480 mode. And since it is monochrome, it does not require any EGA bitplane functionality either, as there is only one bitplane.
This makes MCGA an interesting ‘lowest common denominator’: if you write a game that works on MCGA, it will also work on VGA. And this is what many early games did. They just used mode 13h as a dumb 64k framebuffer. For many types of games, such as graphics adventures, this was good enough.
However, MCGA never quite caught on. Only one non-PS/2 machine that supports MCGA is known to exist: the Epson Equity Ie. Fully compatible VGA clones quickly flooded the market, and after a while, even IBM dropped MCGA from their product line.
So that’s why you’ll see MCGA listed with some early 256-colour games, and that’s why you rarely see any MCGA hardware around. It’s only found as a built-in option in the machines mentioned above. No discrete graphics card with MCGA chipset exists.