The issue is basically:
Doom is choosing colors as if the video card can use full RGB color, but the Micron grayscale card is only looking at one part of each color: the blue value. That makes the image’s brightness wrong.
A normal indexed-color Mac display works roughly like this:
- The screen memory does not store full RGB pixels.
- Each pixel stores a number, usually 0–255.
- That number is used as an index into a CLUT: a Color Look-Up Table.
- The CLUT says: “color 37 means RGB value (R, G, B).”
So the screen might store:
pixel value = 37
CLUT[37] = (120, 80, 40)
On a normal color display, that produces a brownish color.
On a proper grayscale display, that RGB color should be converted to a brightness value, often called
luminance. For example, green contributes more perceived brightness than blue, so a rough formula is:
brightness = 0.30 * red + 0.59 * green + 0.11 * blue
So (120, 80, 40) should become a medium gray based on the combined perceived brightness of all three channels.
The Micron card apparently does
not do that. Instead, it effectively says:
brightness = blue
So for (120, 80, 40), it uses only 40, making the pixel much darker than it should be.
That is what they mean by:
Micron cards use a single channel (blue) for the grayscale output.
In plain terms:
the card is treating the blue component of each palette entry as the grayscale brightness.
This works fine only when the palette is already a grayscale palette, where each entry looks like:
(0, 0, 0)
(1, 1, 1)
(2, 2, 2)
...
(255, 255, 255)
In that case, red, green, and blue are all equal, so using only blue gives the correct result.
But Doom does not just use a simple gray ramp. Doom uses a custom palette with colors like browns, reds, greens, grays, and dark tints. For example:
brown = (120, 80, 40)
red = (180, 20, 20)
green = (30, 160, 40)
gray = (100, 100, 100)
On the Micron card, those become approximately:
brown -> 40
red -> 20
green -> 40
gray -> 100
So colors that should be visibly different may collapse into similar gray values, and colors with low blue values become much too dark. Doom has a lot of reds, browns, oranges, and dark warm colors, so this would make the image look especially bad.
The second issue is
gamma.
Even if the card used the right brightness values, the display may still look too dark unless the driver applies an appropriate gamma correction table. CRT displays do not map numeric pixel values to perceived brightness linearly. A value of 128 is not perceived as “half brightness” unless corrected. The developer is saying the Micron driver does not enable a good gamma table by default, so the whole image is darker than it should be.
So there are two separate problems:
- Bad color-to-gray conversion
The card uses only the blue channel instead of converting RGB to luminance.
- Bad or missing gamma correction
Even the grayscale values it does produce are displayed too dark.
The suggested programmer-side fix is: whenever Doom changes the CLUT, do the grayscale conversion yourself.
Instead of putting Doom’s original color palette into the CLUT like this:
CLUT
= (red, green, blue)
you would compute a grayscale value first:
gray = luminance(red, green, blue)
CLUT = (gray, gray, gray)
Then even if the Micron card only reads the blue channel, it still gets the right brightness, because:
blue = gray
This should also be safe on better grayscale cards and on color-capable Macs, because a palette entry with equal red, green, and blue is simply a normal gray color.
In short:
The Micron card expects the palette to already be grayscale. Doom is giving it a color palette. The card only reads the blue part of each color, so many colors turn into the wrong shade of gray. The fix is to convert Doom’s palette entries to grayscale before loading them into the Mac CLUT.