You should still look into MAME’s ntsc pass in slang, if you get a chance. I may be wrong about the hard-coded thing as I’ve only looked over it once and didn’t spend a bunch of time looking at the code, just a quick browse lol.
Off the top of my head, the only really hard-coded (ish) thing about it, is that you need to pull the #pragma settings
out of the mame.inc file and put them into the ntsc pass and reconnect everything in the ntsc pass so it will actually run by itself (I’ve done this with the MAME phosphor/afterglow pass, so it should possibly work.)
EDIT: I think only two CRT shaders have built in ntsc modes, crt-sim and mame-hlsl. (Three, if you include GTU as being a CRT shader itself…)
Also I think the ntsc-composite/s-video set (from the ntsc folder), along with gtu are about the only ntsc shaders available, besides the ones built into crt-sim and mame-hlsl (these are separate passes in these shaders, btw.) So not very much choice in this department…
I personally tend to shy away for de-dithering shaders. (Way to many false positives, and just a huge hassle to set up, as not all de-dithering shaders look good on all systems/content.)