For a long time, I finally have my hands on a real Gameboy Color. I decide to make a blog about it here.
GBC, just like the Gameboy Advance, uses the reflective light LCD instead of emitting light or having a light layer. It was still a big improvement over any original Gameboy and its variants. Like what My Life in Gaming showed on their Gameboy line video, the GBC have better response time and better contrast.
I ordered a GBC and recieved it few months ago and test it myself. The interlaced motion blur is there just like the GBA. The colorspace is similar, but something is really different. When played, the screen looks brighter. However, I flashed the GBC and GBA screen with a room light, and the white color has the same luminance. If both screens have the same brightness on the whites (or screen being turned off), it is related to the gamma. Both My Life in Gaming and the documents of No$GBA and BGB had said that the GBA screen is darker.
http://bgb.bircd.org/pandocs.htm#videodisplay (LCD Color Palettes (CGB Only) Section)
https://problemkaputt.de/gbatek.htm#gbalcdvideocontroller (LCD Color Palettes Section)
It’s true that the gamma is darker, but the GBC is lighter. It is the opposite of how the GBA screen’s gamma worked. When you flash the light on the GBA, it depends on the angle of the light that is hitting the screen. When you have the light flashed on the bottom angle, it is really close to a standard gamma. If the light is shot at the middle 90 degree angle, the gamma has changed, and the GBA looks a bit darker when playing a game. On the middle angle, the dark areas are still seen pretty well. On the GBC, it becomes a bit brighter. When the light is going really above, such as having the sun or a light from the roof, the gamma shows a bigger difference. The GBA is darker that it’s sometimes hard to see dark areas, but the GBC looks brighter, but still can see all the highlights fine, and the dark areas are really bright. It’s really weird that GBC and GBA work in different ways. GB or GBC games looks fine on GBC. Some developers know that GBA is darker, even being different than the GBC.
Games like Shantae or Legend of Zelda Oracles of Age & Season have palettes for GBA. Those palettes looks like they have brighter gamma, just to have the palettes optimized for GBA. Later on in the lifespan, those games may look too bright when played on a Gameboy SP (AGS-101 backlit) or Gameboy Player.
It’s really odd that they made GBA’s screen work differently on gamma. It’s no wonder why the screen is known to look dark. It’s also the reason why developers didn’t need to worry about their games to look dark on GBC. However, the color space is different from most TVs and Monitors. It is less saturated, just like GBA. The colorspace is similar to GBA, but slightly different. As far as I have been trying to sample the colors to the screen, GBA seems to have slightly more saturation. Brighter gamma seems to make other colors brighter with less saturation, while the GBA is reverse. That’s how changing the gamma setting works. There is no real gamma value for each screens since it varies by light angle, but I can give the best values to show the best matched gamma when having the light from the top, the middle, and the bottom angles.
GBC-Color option has brightness values from 0 to 1.2.
Top: 1.2
Mid: 0.5
Bottom: 0.0
GBA-Color option has darken values from -0.25 to 1.5.
Top: 1.5
Mid: 0.45
Bottom: -0.25
When trying to flash the bottom on GBA, the gamma seems to be a little bit brighter than how the gamma is shown on emulators. It’s odd that the GBA gets the reverse effect of gamma variance from GBC, but it can have slightly brighter gamma than standard gamma if the light is shooting from the most bottom angle. If done on GBC, it doesn’t look dark, but it can have slightly brighter on the gamma, but since shoving the light on the bottom is more difficult due to its handheld design, I couldn’t determine the darkest gamma that I can recieve at best. However, the GBC can look close to Gamma 2.2, which can mean that the brightness can be set to 0.0 value if you prefer raw gamma. For the middle angle values, I don’t set the value to 50%, but around 30-40% on the strength. I tried matching them with the screen when trying to shoot the light in the middle angle.
I am aware that there are GBA games that do have different video setting when played on Gameboy Player. Games such as Super Mario Bros 3 have the palettes match the SNES Super Star game. Only thing I saw different in standard GBA mode is a simple gamma boost instead of also converting sRGB colors to GBA. Doom has only gamma adjustment, just like the actual original DOS game. Legend of Zelda games do have brightness adjustment, where the lowest one matches the SNES games. There are several more examples of GBA games that either has Gameboy Player enhancement to the video or have internal setting for the brightness. Sonic Advance 3 Gameboy Player mode looks a bit washout.
In the end, GBC shader looks really identical to the screen. Palettes matches more often between the screen and the shader. Of course, like GBA shader, GBC shader is also more or less absolute on colorspace. The blue is supposed to be more blue, but most screens target sRGB colorspace and the blue color found on GBC, GBA, NDS, or PSP cannot be completely replicated. The shades around the blue primary are pretty much clipped on the red value to have the other color tones match better. That’s how colorspace work when using icc profiles in relative or absolute mode.
(Bonus) On GBC bootstrap, if you pick Red/Yellow palette, it will look very identical on both GBC and GBA. How? The Red value is straight up pure red signal and the yellow is a straight up pure red and green signal. You can see it as 255,0,0, and 255,255,0, respectively. Because it is using the full signal on used colors and unused ones with no signal, it is not affected by any variance of the Gamma. That means regardless if you’re using GBC or GBA, and having different light angles shooting at the screen, it will stay the same. Only thing that will change is if how bright of a light shoots the screen, that’s the only thing it matters.
Next subject would be about LCD shaders. Well long time ago, I did play around with the settings for each preset that uses LCD-Grid-V2. I only made the RGB values at 0.75 and have gain at 1.5. It does not change the difference at all when comparing the default settings that has RGB values and Gain at 1.0. I was trying to see how I can have LCD shaders look bright enough without having clipping on the whites or looking too dark. Of course, it looks best when turning up the brightness of the screen. Well, that’s the only best option until majority of the users have HDR screens. Besides that, the Gamma has to be at 2.2 with Black Level and Ambient at 0.
Each handheld consoles have different RGB patterns. Some are RGB and others are BGR. Based on the consoles that I have, it’s best to look at an image that has very high contrast, like black and white to see what type of order the LCD is. Here are the lists:
GBC: RGB
GBA: BGR
SP-101: BGR
NDS: RGB
DS-Lite: BGR
I would like to include the PSP and old Palm phones in the list, but I don’t have those, and the latter have many models of it. To tell how the screen is RGB or BGR order, Have the white be the major part on the screen and look at the edge of the blacks or the sides. If the right edge of the screen is red and the left side is blue, then it is BGR. Same can be said for BGR if Blue and Red are reversed. I decide to change the settings on the preset based on the console’s screen.
The screens on GBC and GBA doesn’t look like it is interlaced like you would on a raw unfiltered interlaced content straight from a DVD. Instead, it looks like it has some sort of scanline motion blur. When moving up and down, depending on the speed, I can see some jagged edges, and even having a static image, you can see some scanline flickering on midtone colors or even grey. On NDS, all you only see is minor scanline motion blur. The PSP 1000 and 2000 has the longest response time I’ve ever seen on a portable device, the last time I saw it.
Now the last thing is to suggest which is the best LCD shader to use for GBC, GBA, and NDS. What’s best in my eyes that comes the closest is the LCD-Grid-V2 shader. I’ve tried the AGS and AGB shaders, but the subpixels are too thin and it looks a bit more dark than LCD-Grid. Sameboy or Simpletex shaders aren’t that close either. The white can pretty much reach above RGB just like normal screens. I’ve taken the snapshot of LCD shader to my phone that is 1440p, and compare it with my GBA-SP 101. It seems to look very similar on how the LCD shader looks. I even check on my GBC and it seems to match the shader providing that I use RGB order with GBC shaders on the top.
Best setup to emulate the screen is in this order: “LCD-Grid-V2 + GBC-Color”
If you want to add motion blur, it goes like this: “Motion Blur + LCD-Grid-V2 + GBC-Color”
Or course, you can change a specified colorspace from GBC to a different one, or not use it if you want to see pure raw colors like you would on AGS-101. The motion blur has to be first since it looks at the raw image only.
Now that I’m finished on the blog about the LCD screens from the real hardware of GBC, GBA, and others, here is the release for the shaders.
https://drive.google.com/open?id=0B5KxdoFEcyTkZ3I0WWZkM00zT0k
Soon: Shaders for BT.2020 and DCI-P3, for phones and Windows 10 HDR mode. Wider colorspace can show the blue color more accurately.