According to Rec. ITU-R BT.1886, the most accurate gamma is 2.4, but BT.1886 also has this much more accurate piecewise formula. Most shaders in RetroArch just use ordinary gamma, but Grade uses a variation of this more accurate formula.
Notice how this formula includes the CRT’s brightness setting in there. The main culprit of varying gamma levels is brightness, though contrast affected it too to some extent.
“Saturation” can mean different things depending on what you’re talking about, but I assume you’re talking about the video signal. It’s usually just 1.0, if you want the colors the developers intended, regardless of what video signal or region the developers used.
If you’re looking for the color that consumers ended up with, PAL color is pretty much unchanged, but for NTSC consumers, there’s a whole color adjustment that NTSC consumer CRTs did which messed up the saturation and hue everywhere to make flesh tones look better… The only decent way to get this NTSC effect right now is through the Sony CXA2025AS color palette on NES. For other consoles, there isn’t a really decent way to do this at the moment.
I recommend NTSC-Adaptive (in shaders_slang/ntsc), or crt-guest-advanced-ntsc (in shaders_slang/crt). (Both of these use the same NTSC engine.) For SNES, set it to use 2-phase; otherwise, use 3-phase for most consoles.
Genesis/MegaDrive and Master System have a 1-phase pattern which isn’t emulated by NTSC-Adaptive. Instead, it has a dedicated setting to add 1-phase rainbows, while still having 2-phase artifacts.
NTSC-Simple has actual 1-phase, but it is a less robust shader than NTSC-Adaptive. If you use this, make sure you set “SYSTEM CHOOSE” to GEN for most Genesis games, or MS-MD256 for Virtua Racing and all Master System games.
I have one that I’m working on which includes the two color changes mentioned above (the BT.1886 piecewise gamma, and flesh tone correction on consoles other than NES), but I recommend waiting until around this late December or early January before using it, because that’s when I’m planning to rewrite the whole thing from scratch. My current shader is poorly optimized and needs a powerful enough computer, is missing some things that I need to implement, and has a big long list of settings with no guide on how to use it. You can find my latest download link here if you want to try it out, and here’s a post I made with brief list of settings you should change. This shader has the most accurate-looking Genesis/MegaDrive NTSC effect I know of at the moment, but I recommend using other options for now, until I start fixing this around December or January.
Cyber has answered this for you already, so I’m not going to waste time repeating it. These presets are currently the most accurate-looking in terms of the general CRT effect, including video signal and color grading. (Though personally, my preferences surrounding accuracy are very different from other peoples’, I think these are the options most people are wanting. It looks very convincing the way it is.)
On the technical side, the CRT shaders here aren’t truly “accurate”, but they are doing the best they can with current knowledge about CRTs and the constraints of what can be done by video shaders. Everyone’s learned by now that the resulting appearance is far more important than true scientific accuracy.
Outside of the presets that Cyber linked, there are some more basic options that already combine NTSC artifacts, color grading, and the CRT effect, all in one preset, located in shaders_slang/crt. I recommend one of the crt-hyllian or crt-guest-advanced ones. Hyllian’s are the easiest because they have so few settings, whereas Guest’s have a lot more settings, which are better suited to people like Cyber who make presets.
At the beginning of this post, I mentioned Grade, which has a variation of the BT.1886 function. RetroArch has a feature to append or prepent presets. So, if you want to use NTSC-Adaptive with Grade, you first load NTSC-Adaptive as normal, then click “Append”, and load Grade. That combines NTSC-Adaptive with Grade.