Working on an RGB-centric noise shader, applicable to arcade, SCART, etc. Three ‘noise grades’ are available as well as a custom mode: professional, consumer, and degraded.
Pro
Consumer
Degraded
Pro
Consumer
Degraded
Working on an RGB-centric noise shader, applicable to arcade, SCART, etc. Three ‘noise grades’ are available as well as a custom mode: professional, consumer, and degraded.
Pro
Consumer
Degraded
Pro
Consumer
Degraded
Some discussion on how the RGB noise injection works: aside from jitter and white noise, crosstalk is added to the RGB output in a few ways:
For a somewhat realistic crosstalk effect I tried to simulate high frequency effects on the channels. This is done by first calculating the difference of the input pixel with the one on its left:
This screenshot has contrast increased for visibility. A custom mipmapping shader is chained to create mipmaps, enabling us to average the result at different lengths. Depending on how much interference we want to create, we select an average length and use that to envelope crosstalk.
Here is an example of extreme red/green crosstalk. High frequency green periods create red smears. High frequency red periods create green smears. Blue/green crosstalk is done in the same way.
At low levels, the approach is decent. At high levels, it breaks down largely due to the symmetric filtering of the mipmaps and that’s something I may be able to work out further. It also doesn’t consider any second-order effects.
The other two forms of crosstalk are simpler, being based on fixed tones and harmonics. For ground bounce, a tone related to H frequency is selected, and the starting harmonic can be chosen depending on how many ‘jail bars’ one wants. A ‘saggy saw’ response of this tone is computed and applied to all three channels equally:
The final method is simulating subcarrier leakage, where the fundamental is chosen as the subcarrier. Not all systems have a subcarrier present and can indicate this by setting subcarrier mode to off. The subcarrier leakage primarily affects blue, then green, and red (this aligns with some real designs). On the SFC this results in diagonal artifacts, but the direction is system-dependent. For example, on Mega Drive and Neo Geo AES this will manifest as fine jailbars. For a noisier response, a harmonic sum is computed instead of a pure sine tone (this results in the faint vertical lines in the screenshot).
Maybe I don’t get this, is it supposed to simulate noise (cable interference) from an rgb signal like scart?
It isn’t necessarily from cable interference. It can also be from trace layout. Traces running in parallel, close to each other, can have crosstalk. It simulates noise from any source rather than attempting to model at generation, transmission (cable), reception, etc.
How goes the update for the Sega Master System/SG Mk. 3 going?
For some reason, even when I set the aspect ratio to full; it doesn’t cover the whole screen. Any reasons why? Integer Scaling has been disabled, as well.
Which system are you emulating, and in what way isn’t it filling the screen? I see you mentioned Master System, most scrolling games on that console have a one-tile blanking mask along the left edge.
Really? I didn’t know. I love this scanline classic very much and it is perfect. I was just wondering for that. I can’t until he gets a Master System/S.mkIII shader. I am using the aaagenericntscj for the Master system for now
Yeah, I think the issue was that 8 bit consoles generally only had the ability to render enough tiles to fill the screen, but once you start scrolling, you end up with two partial tile columns on the left and right edge, both of which would have to be rendered. The NES could handle it, but only in one direction at a time. So games that allowed for bidirectional scrolling (like SMB3 and Kirby’s adventure) had to allow one column of tiles for junk/partial tile data and either cover it up with a mask or just live with the flicker.
I don’t know all the details, it has something to do with name tables.
Of course, it was less of an issue back when the image was partially obscured by overscan.
Oh, so that’s what it is. Thanks for that info though. I can’t wait for more updates on this. I can’t believe I didn’t noticed this thread until this month.
I did a test recently and the phosphor decay is so good now! good job!
You can actually use the Mega Drive / Genesis presets for it because the timing ends up being equivalent. I have verified it works okay (just make sure your region settings are aligned).
I may still do a dedicated MS preset bundle but I am in the middle of a big rewrite unfortunately.
Take your time, big dawg. I enjoyed your shaders.