Who could have thought that a simple MS vs GG colors question would bring such interesting technical answers. I live for this stuff, even if I just grasp a tiny bit of it.
Krejilooc, my mind is still processing that RG|BR|GB|RG chart you so thoroughly explained. Would you mind posting a pic of how Castle of Illusion looks on the GG screen?
Ha, I just went through and re-read what I wrote, and it doesn't seem very clear at all. Let me explain in more detail using examples.
What happens is that the horizontal resolution of the screen is mapped out according to two-subpixel "pixel" groupings on the game gear's LCD screen. This means individual red, green, and blue subchannels, which would normally represent one pixel, are broken up into groups of two to make up more resolution. The mapping is as follows:
Let's label these 1-4. This is 12 subpixels, which is 4 pixels.
SMS pixels:
Code:
..1.....2.....3.....4....
[RGB] [rgb] [RGB] [rgb]
GG pixels: the same number of subpixels (12) now becomes 6 actual pixels
Code:
..1....2....3....4....5....6....
[RG] [Br] [gb] [RG] [Br] [gb]
Note that, in the above, 3 groups of RGB sub pixels maps onto 2 groups of RGB subpixels. This is a 3:2 pulldown. The SMS's horizontal resolution is 256, but as I said they ignore the edge-most 8 pixels on each side, meaning it considers only 240 pixels. The game gear's screen resolution is 160 pixels wide. (240*2)/3 = 160.
They map like so:
GG R1 = SMS R1
GG G1 = SMS G1
--------------------------
GG B2 = SMS b2
GG r2 = SMS r2
--------------------------
GG g3 = SMS G3
GG b3 = SMS B3
--------------------------
GG R4 = SMS r4
GG G4 = SMS g4
etc.
If you note, this means you lose a sub pixel across the SMS image as it scales. This creates a slight blurring effect horizontally across the screen. The Game Gear screen demonstrated color bleed like other CRT screens of the era, so this loss of color information was usually masked by the bleeding pixels. Of our original 12 subpixels, we only use 8 of them (again, (12*2)/3=8, 3:2 pulldown).
This is what the result of this horizontal scalilng looks like:
With vertical resolution, there is a real time two-step blurring process that purposely bleeds values among pixels above and below. In alternating fashion, either 3 pixels will be turned into corresponding 2 pixels that are half-blurs of each pixel, or 4 rows of pixels will be turned into 3 rows of pixels with the same type of blurring. The blurring ratio goes as follows:
Even numbered raster lines: X = current line
(X - 2 * 1/6) +
(X - 1 * 1/3) +
(X * 1/3) +
(X + 1 * 1/6)
You can see the two tail ends at the top and bottom (about 1 line "above" and "below" the 2 line thick selected area) are considered at half the rate that the other two lines are, essentially converting those two tailing selections into a weight equal the other 2 (i.e. 1/3).
For odd numbered raster lines: X = current line
(X - 1 * 1/3) +
(X * 1/3) +
(X + 1 * 1/3)
For this part of the pattern, all 3 lines are considered equally in weight.
This can be seen by scrolling a horizontal line down the game gear screen: