Three shades of red plus black, that’s it regarding colors on the Virtual Boy. But there are tricks to work around this limitation and experimenting with these has been on my TO DO list for a long time.
Time to tick that off. Here’s a simple demo demonstrating three different ways to display more than four colors on the Virtual Boy simultaneously. These are:
We’re starting off with good ol’ dithering. OK, this is technically cheating since we do not really show more than 4 colors at once, but still, dithering at least creates a good illusion of a more color rich images, while not relying on any technical trickery.
2. Column Table
Through the Column Table’s brightness repeat register, it is possible to change the amount of light emitted by the display LEDs (and thus the perceived brightness) every fourth pixel column.
This allows for a huge range of different shades of red on screen at the same time, but practical use cases are very limited, since you’re bound to the grid of 4px columns and brightness changes always affecting the whole screen height.
This one is the heart of this demo and the actual show piece. By exploiting the persistence of vision effect of the human eye it is possible to display 8 different colors on screen at the same time.
It works by blending together two images, that is overlaying one image with another, half transparent one. Half transparency is achieved by simply displaying that image only every second frame.
Beware that this trick does not work very well on emulators but produces pretty stable colors on real hardware.
The 2nd method is useful to make independent vertical regions flash in a game scene. And it’s also like the Shadow/Highlight modes of the Sega Genesis/Mega Drive VDP. Dithering can be associated because of the 4-column bandwidth of the column table.