To get zero excess chroma per scanline and field, set the offsetLine, offsetFrame, and offsetFrameMod settings all to 1.0. The offset amount is the reciprocal of that multiplied by the subcarrier’s wavelength, which becomes 360 degrees in this case. That way, you use 1.0 for Genesis/MegaDrive and Master System, 2.0 for PSX or PC-Engine (“2-phase”), or 3.0 for NES and SNES (“3-phase”) (but offsetFrameMod=2.0 except Battletoads-like games). I think 8.0 and 15.0 are the correct numerator and denominator values as well, but I forget which is which. You’re required to set the default resolution to 320 pixels (or else your custom color carrier wavelength setting will get ignored), and if you’re using anything other than BlastEm, don’t forget to do the BlastEm correction. Since you’re using a gamutthingy LUT, you also need to change my video decoder/region setting to 0.0 which disables the color corrections that are in p68k-fast-mp-post-color-deinterlace.inc…
Although I didn’t implement parameters to control the filters in the encoder, they’re easy to find and edit in the code. What’s missing is a Y notch, though.
Here’s a quick copy of the code I currently have in my shaders folder right now, which I’ve already added an encoder Y notch setting into that you might find useful. The chroma bandpass (or lowpass in this implementation) still has to be controlled by directly editing the source code yourself, but the numbers are in an obvious spot that you can’t miss. This isn’t a fully prepared update, just a version that I’ve been using and gradually making small edits to over the months while playing my PS1 games casually, so I can’t guarantee that there isn’t going to be some bug that breaks a feature I wasn’t using regularly, or any inconsistency between files that are supposed to be consistent. https://drive.google.com/file/d/1xBkci0AlL-C-JuXxqzVA7a5VPLSowQmk/view
Edit: Also, in this version, you might want to turn off the “Replace Y Notch with C remod” setting to be able to control sharpness in the decoder.
Edit 2: You’ll also want to edit the preset to have a simple 1x or 2x multiplier for horizontal resolution instead of forcing 640. In other words, change “absolute” to “source”, and change 640 to 1 or 2, whatever your computer can handle. This horizontal resolution multiplied by 4 is the number of video signal samples, so to minimize aliasing artifacts, you need to make sure this number times 4 is always an integer multiple of the game’s resolution.
The problem with aliasing does negatively impact the FIR filters’ accuracy more than I originally realized months ago, and fixing this would require rewriting much of the shader code from scratch.
Edit 3:
That changes things. I haven’t tried ares, but I’ve tried ShaderGlass and found that my shaders fail to compile on it because it’s trying and failing to unroll several of my while-loops. To make them unroll successfully, I had to convert the while-loops to for-loops with a fixed number of iterations. A couple loops needed to have their inside code shortened or changed too. I’ll upload this fixed version for you soon, but it might not fix everything for Ares.
Even with that fix, some of my shaders’ features, like deinterlacing, didn’t work with ShaderGlass because they require referencing passes out of order and getting feedback from previous frames, neither of which seemed to be supported by ShaderGlass. When either a previous pass or a previous frame is referenced in ShaderGlass, the result is always black, so I suspect that might be why Ares is only outputting a black screen for you.
With ares, your mileage may vary, since I haven’t tried it with ntsc-p68k-fast-mp yet. I wish you luck with this.




)