So, I must ask, what is the difference between these shaders and the options present in the mgba core and standalone?
mGBA standalone uses the same shaders. Only recently did endrift update this one. I guess now it needs another update.
Ok, so i updated to the new values from the latest shaders. I donât know. The GBA color profile now looks a bit more washed out than previously. Thatâs why i added a tiny bit of darkening on top.
You can find a build of this exact version under the Actions tab on GitHub. Obviously you need a modded 3DS that can run FIRM files at boot.
Here is a build where i left darken screen as 0. Itâs just a little too washed out for my taste. https://www.dropbox.com/scl/fi/2synezltfi32pbwlgc1jt/open_agb_firm_gba_color_darken_0_test.7z?rlkey=h03nv1v1bp6m2kqxysxhai0ou&st=bcz867am&dl=1
Yeah I change the default gamma to 0 since the preset shader uses the LUT with gamma I added. The preset defaults to something like gamma 3.0, from the center of the GBA
Yeah, i made a comparison old defaults vs new. The extra brightness is just a little too much for the 3DS LCD since the whitepoint is quite cold. On a normal sRGB LCD itâs quite acceptable.
I also updated my tool for converting screenshots. All you need is lodepng from here and a compiler. Instructions how to compile in line 108.
That reminds me Game Boy Interface has some special settings documented that differ from your shader defaults. Gamma, contrast and brightness. Thoughtâs on this? I also donât quite understand how the values for the settings were calculated.
https://gc-forever.com/wiki/index.php?title=Game_Boy_Interface/Standard_Edition#Color_emulation
Interesting. The input gamma is what the gamma setting on the shader and the LUT shader work, as it does alter the gamma before it does the color correction, which is what the given presets on the wiki states. As for brightness and contrast, somehow it tries to emulate the contrast of the displays to give it a look? Not sure if the given contrast ratio was from the test or something to increase black levels and decrease white levels, but it is interesting. I donât plan on approaching the same contrast accuracy due to varying degrees of LCD displays and varying levels of contrast ratio. I know both Sameboy and BGB tries to replicate it.
Also, on my GBA preset, the input gamma pretty much ranges from 2.2 and 3.8. The default being around 3.0 when flashed the gamma ramps on the GBA in center light angle when using 240p test suite. The GBA shader preset have very similar gamma as the old one as you demonstrated, when I just tested the preset on Retroarch.
That reminds me your shaders do the darken screen adjustment on the input side. I found that doing it like that changes the colors noticeably the stronger darken screen is. Would not it make sense to change the gamma on the output side or is there a specific reason itâs done like this?
Oh, and before i forget extrems explained how contrast and brightness are calculated.
profi200: The values were calculated using part of this formula:
https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.1886-0-201103-I!!PDF-E.pdf#page=4
Example for https://www.gc-forever.com/wiki/index.php?title=Game_Boy_Interface/Standard_Edition#Game_Boy_Advance
gamma = 4
brightness = (1 / 250) ^ (1 / gamma)
contrast = 1 - brightness
The output gamma affects the primary colors when doing color correction from RGB. It wouldnât look right, but with input gamma, it affects the gamma before the color correction takes place, which retains gamma corrected color correction to the primary, with gamma 2.2 adjusted.
Merry Christmas!
I got myself a colorimeter and made some measurements. I guess the thread title can now be changed because we have data on old 3DS and IPS New 3DS XL as well. I didnât measure the New 3DS XL bottom LCD because it has a way too warm whitepoint. I plan on doing more measurements as well as measuring my DSi and DSi XL LCDs.
Mentioning my setup just in case i made a mistake. HCFR 3.5.1.4. The colorimeter is a Calibrite Display Plus HL and i made all measurements in the dark under my table and with the second LCD backlight turned off (to prevent the other LCD light from influencing the measurements) because the colorimeter does not sit on the LCD directly (light can enter from the sides). I also made sure colorimeter and LCD are warmed up. This was specially challenging because the 3DS LCD backlight kept drifting downwards even after over 30 minutes to make it stabilize. The New 3DS XL on the other hand stabilized very quickly. I adjusted brightness until the colorimeter read about 80 nits on 100% white for all measurements.
Results:
old 3DS top LCD. Gamma is an accident as well as color temperature. HCFR can only show a single point in the top right corner for the color temperature.
old 3DS bottom LCD. About the same as top but a little bit of a different gamma.
New 3DS XL top LCD (IPS). Much lower delta error rates but still bad in many measurements. The blue channel is different than old 3DS. HCFR also partially canât show the color temperature but itâs much closer to D65 than o3DS.
Bonus microscope shots of the top LCDs i made years ago. In order o3DS and N3DS XL IPS.
The code i wrote to to show the test patterns. The overlay from HCFR showed slightly different values than the reference in a few cases. I used the RGB values shown in the overlay.
The 3ds seems to share very similar colorspace the whole DSLite-DSi and GBA-SP 101 have. The only difference is the blue color is much closer to sRGBâs blue color, only a little higher hue and slightly out of gamut of sRGB. The IPS one has the Red color raise more saturation a bit to nearly its fullest of sRGB, only still a bit more orange like the non-IPS one, and somewhat better gamma and color temps, but far from what average IPS displays from the last couple of years has provided. Still an improvement at the least especially the viewing angle. Also canât wait to see the DSi measurements as well as XLs. I would request the LCD subpixel photo if possible. Thanks for sharing them
I have two AGS-001s. These are second hand so I dunno the history, but these two have screens that look different Hereâs a photo with the frontlight off.
The left one looks warmer, the right one colder.
If you shine light from the top of the LCD does one of them look darker than the other? Thatâs what i observed with my SPâs.
@Pokefan531 I was made aware of a small quirk of how GBA mode on DS works. On DS the LCDs use 6 bits per channel and seems like they bodged it by leaving bit 0 as always zero and the upper bits are from GBA hardware. Mentioning this because the DS (lite) shaders may not be accurate to what it looks like on hardware.
Hi @Pokefan531 , Iâm the developer for a (3)DS Capture Card Viewer software. Iâve already implemented some of your shaders based on the OAF implementation. You can see the data here: https://github.com/Lorenzooone/cc3dsfs/blob/3bc9425bad768fe6be013a4d06a9e9895712fd56/source/frontend.cpp#L369 Thanks a ton for all your hard work!
Iâd like to know, from @pica200 âs files, how could I get the values needed for a shader to recreate the colors of the 3DSâ screens? Thanks a ton for any answer!
Semi-related, but I noticed that FFTA has a color-corrected mode for TVs built into the game. Anyone know of other GBA games that had this feature?
I know some games with GameBoy Player support loading different palettes for it. Mother 3, for example, calls this âGamma Correctionâ in the debug menus.