Presenting the old school analog TV pack...version 2!

Updated the pack with a new setting: 480p.

I initially designed this around the plethora of 2D fighters for Dreamcast to try and deal with the issues of pixellation of old upscaled sprites clashing with higher-res backgrounds, but I think it works quite nicely for 3d polygonal games too :slight_smile:

Note that it looks crummy on 240p games so use only with 640x480p content.

Links updated in the OP, here is a few quick screens.

These DC screenshots looks very good! Congrats!

Great work! Please keep it up :smiley: I thnik that Vintage TV is the best… but still little too blurry :confused:

Version 3 is in the works, completely redone, everything, stay tuned :slight_smile:

Thats awesome, cant wait ;D

This is raw screenshot in mednafen retroarch:

This is captured with SCART (RGB) on real hardware PS1:

And this is what im experimenting with shaders:

And here is PS3 emulation caputured with composite i think:

This guy has a Youtube page for a similar shader. Though he seems to be using variations of crt royale.

thx for those links - those shaders looks very nice :slight_smile: The first old Sonic have something similar to Vintage TV from solid12345

But i think its white is little oversaturated

bump I was testing various variations on VTV shader, maybe someone will like one of it. More to come.

shaders = "4"shader0 = "VINTAGE TV/ntsc/shaders/ntsc-pass1-composite-2phase.cg"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
frame_count_mod0 = "2"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "absolute"
scale_x0 = "1280"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "VINTAGE TV/ntsc/shaders/ntsc-pass2-2phase-gamma.cg"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "0.500000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "VINTAGE TV/sharpen70s.cg"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "VINTAGE TV/image-adjustment.cg"
    wrap_mode3 = "clamp_to_border"
    mipmap_input3 = "false"
    alias3 = ""
    float_framebuffer3 = "false"
    srgb_framebuffer3 = "false"
 parameters = "NTSC_CRT_GAMMA;NTSC_MONITOR_GAMMA;hardScan;hardPix;warpX;warpY;maskDark;maskLight;scaleInLinearGamma;shadowMask;brightboost;target_gamma;monitor_gamma;overscan_percent_x;overscan_percent_y;saturation;contrast;luminance;bright_boost;R;G;B;ZOOM;XPOS;YPOS;V_OSMASK;H_OSMASK"
    NTSC_CRT_GAMMA = "3.099999"
    NTSC_MONITOR_GAMMA = "2.100000"
    hardScan = "-6.000000"
    hardPix = "-20.000000"
    warpX = "0.03000"
    warpY = "0.040000"
    maskDark = "0.300000"
    maskLight = "1.000000"
    scaleInLinearGamma = "1.000000"
    shadowMask = "1.000000"
    brightboost = "0.98000"
    target_gamma = "2.400000"
    monitor_gamma = "2.200000"
    overscan_percent_x = "0.000000"
    overscan_percent_y = "0.000000"
    saturation = "0.850000"
    contrast = "0.800000"
    luminance = "1.350000"
    bright_boost = "0.000000"
    R = "1.250000"
    G = "1.100000"
    B = "1.450000"
    ZOOM = "1.000000"
    XPOS = "0.000000"
    YPOS = "0.000000"
    V_OSMASK = "0.000000"
    H_OSMASK = "0.000000"
shaders = "6"shader0 = "VINTAGE TV/ntsc/shaders/ntsc-pass1-composite-2phase.cg"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
frame_count_mod0 = "2"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "absolute"
scale_x0 = "1280"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "VINTAGE TV/ntsc/shaders/ntsc-pass2-2phase-gamma.cg"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "0.500000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "VINTAGE TV/sharpen70s.cg"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "VINTAGE TV/oldtvshader-configurable-70s.cg"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "VINTAGE TV/blurs/blur3resize-vertical.cg"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
shader5 = "VINTAGE TV/image-adjustment.cg"
    wrap_mode5 = "clamp_to_border"
    mipmap_input5 = "false"
    alias5 = ""
    float_framebuffer5 = "false"
    srgb_framebuffer5 = "false"
 parameters = "NTSC_CRT_GAMMA;NTSC_MONITOR_GAMMA;hardScan;hardPix;warpX;warpY;maskDark;maskLight;scaleInLinearGamma;shadowMask;brightboost;target_gamma;monitor_gamma;overscan_percent_x;overscan_percent_y;saturation;contrast;luminance;bright_boost;R;G;B;ZOOM;XPOS;YPOS;V_OSMASK;H_OSMASK"
    NTSC_CRT_GAMMA = "3.099999"
    NTSC_MONITOR_GAMMA = "2.100000"
    hardScan = "-6.000000"
    hardPix = "-20.000000"
    warpX = "0.03000"
    warpY = "0.040000"
    maskDark = "0.300000"
    maskLight = "1.000000"
    scaleInLinearGamma = "1.000000"
    shadowMask = "1.000000"
    brightboost = "0.98000"
    target_gamma = "2.400000"
    monitor_gamma = "2.200000"
    overscan_percent_x = "0.000000"
    overscan_percent_y = "0.000000"
    saturation = "0.850000"
    contrast = "0.800000"
    luminance = "1.350000"
    bright_boost = "0.000000"
    R = "1.250000"
    G = "1.100000"
    B = "1.450000"
    ZOOM = "1.000000"
    XPOS = "0.000000"
    YPOS = "0.000000"
    V_OSMASK = "0.000000"
    H_OSMASK = "0.000000"



shaders = "3"shader0 = "shaders_cg
tsc\shaders/ntsc-pass1-svideo-2phase.cg"
wrap_mode0 = "clamp_to_border"
frame_count_mod0 = "2"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "absolute"
scale_x0 = "1280"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_cg
tsc\shaders/ntsc-pass2-2phase-gamma.cg"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "0.500000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "VINTAGE TV/image-adjustment.cg"
    wrap_mode2 = "clamp_to_border"
    mipmap_input2 = "false"
    alias2 = ""
    float_framebuffer2 = "false"
    srgb_framebuffer2 = "false"
 parameters = "NTSC_CRT_GAMMA;NTSC_MONITOR_GAMMA;hardScan;hardPix;warpX;warpY;maskDark;maskLight;scaleInLinearGamma;shadowMask;brightboost;target_gamma;monitor_gamma;overscan_percent_x;overscan_percent_y;saturation;contrast;luminance;bright_boost;R;G;B;ZOOM;XPOS;YPOS;V_OSMASK;H_OSMASK"
    NTSC_CRT_GAMMA = "2.100000"
    NTSC_MONITOR_GAMMA = "2.100000"
    hardScan = "-6.000000"
    hardPix = "-20.000000"
    warpX = "0.00000"
    warpY = "0.000000"
    maskDark = "0.000000"
    maskLight = "1.000000"
    scaleInLinearGamma = "1.000000"
    shadowMask = "1.000000"
    brightboost = "1.00000"
    target_gamma = "2.200000"
    monitor_gamma = "2.200000"
    overscan_percent_x = "0.000000"
    overscan_percent_y = "0.000000"
    saturation = "0.850000"
    contrast = "1.000000"
    luminance = "1.000000"
    bright_boost = "0.000000"
    R = "1.050000"
    G = "1.000000"
    B = "1.150000"
    ZOOM = "1.000000"
    XPOS = "0.000000"
    YPOS = "0.000000"
    V_OSMASK = "0.000000"
    H_OSMASK = "0.000000"

W O W

I don’t personally go this retro-shader route (Instead I go for 16:9 stretched with heavy anti-aliasing 100% of the time) … but I am going to try this when I get home.

Seriously, good GOD these look gorgeous.


shaders = "3"
shader0 = "shaders_cg
tsc\shaders/ntsc-pass1-svideo-2phase.cg"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
frame_count_mod0 = "2"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "absolute"
scale_x0 = "1280"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders\shaders_cg
tsc\shaders/ntsc-pass2-2phase-gamma.cg"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "0.500000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "VINTAGE TV/image-adjustment.cg"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
parameters = "NTSC_CRT_GAMMA;NTSC_MONITOR_GAMMA;target_gamma;monitor_gamma;overscan_percent_x;overscan_percent_y;saturation;contrast;luminance;bright_boost;R;G;B;ZOOM;XPOS;YPOS;V_OSMASK;H_OSMASK"
NTSC_CRT_GAMMA = "2.100000"
NTSC_MONITOR_GAMMA = "2.100000"
target_gamma = "2.200000"
monitor_gamma = "2.200000"
overscan_percent_x = "0.000000"
overscan_percent_y = "0.000000"
saturation = "1.350000"
contrast = "0.900000"
luminance = "1.100000"
bright_boost = "0.000000"
R = "1.000000"
G = "1.000000"
B = "1.000000"
ZOOM = "1.000000"
XPOS = "0.000000"
YPOS = "0.000000"
V_OSMASK = "0.000000"
H_OSMASK = "0.000000"



You just made me feel like I was 7 years old again, sitting on my living room floor, not a care in the world. I tried these out this morning, not really expecting much to be perfectly honest… I’ve always been more about the 16:9 stretch and scale and smooth.

But no retro game has ever given me as much nostalgia as the shaders you have here. That composite one… I almost wanted to cry it was so moving; the way it took me back.

I still love the Scalenx filter I found, but I am going to find a way to make it easy to flip to this on the fly. I never thought I’d care about scanlines and glow and such… but you touched my heart man.

Sincerely, Thank you.

I can not WAIT to see what you have done to improve these. :smiley:

[QUOTE=SkyHighGam3r;35741] I can not WAIT to see what you have done to improve these. :D[/QUOTE]

Still working on it, will try and have it soon just want to get everything perfect, but here is a teaser…Donkey Kong and Snk vs Capcom with the redone vintage shader (looks even better in motion!) and also Streets of Rage with a new super sharp TV option since some people thought (and I agree with) my composite and s-video options were a bit too blurry.

Why not use CRT Royale as a starting point?

We are trying to emulate commercial TVs not PVMs or Arcade Monitors

I like Royale and it set the bar for bringing a CRT experience to the next level, but the mask and phosphors are way too strong for my tastes, I prefer thinner “barely there” scanlines with a finer shadowmask myself. (although I will include a PVM-style thick black scanline style in the next pack for those who like that).

Also my laptop has trouble running Royale, it is a dell l702x from 2011 with a i7-2820QM and Geforce 555m GPU. Everything is optimized to get 60fps on that machine, so I assume if you have a machine at least newer than 5 years you shouldn’t have too much troubles with the pack unless your GPU is weaker. Naturally everybody’s experience is different though.


shaders = "5"shader0 = "VINTAGE TV/ntsc/shaders/ntsc-pass1-composite-2phase.cg"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
frame_count_mod0 = "2"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "absolute"
scale_x0 = "1280"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "VINTAGE TV/ntsc/shaders/ntsc-pass2-2phase-gamma.cg"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "0.500000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "VINTAGE TV/sharpen70s.cg"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "VINTAGE TV/oldtvshader-configurable-70s.cg"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "VINTAGE TV/blurs/blur3resize-vertical.cg"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
parameters = "NTSC_CRT_GAMMA;NTSC_MONITOR_GAMMA"
NTSC_CRT_GAMMA = "2.500000"
NTSC_MONITOR_GAMMA = "2.500000"

These look incredible. I particularly enjoy the screen curve effect. I noticed while trying these out that the curve on the B&W shader was more prominent, or at least it gave that illusion. I couldn’t seem to replicate that much curve on the other shader presets though. Obviously that’s just one facet, and the sum is far greater than the parts.

I noticed you mentioned that the composite and S-video options are blurry? This wasn’t my experience, but the Component option was very blurred when I tried it. To the point I wondered if I got Composite (Red/White/Yellow) and Component (Red/Blue/Green) mixed up. I couldn’t distinguish anything on screen. Am I doing something wrong possibly? Just loaded the pre-set and pushed apply.

I thought the RGB-Scanlines option was for a PVM style monitor? I could be wrong, I’ve never seen one and I only recently even heard of them.

[QUOTE=SkyHighGam3r;35797] I noticed you mentioned that the composite and S-video options are blurry? This wasn’t my experience, but the Component option was very blurred when I tried it. To the point I wondered if I got Composite (Red/White/Yellow) and Component (Red/Blue/Green) mixed up. I couldn’t distinguish anything on screen. Am I doing something wrong possibly? Just loaded the pre-set and pushed apply. .[/QUOTE]

Dunno I just thought the composite and S-video looked a bit too dark & muddy, but here is another shot of the improved composite mode i’m working on.

As for the Sony PVM option, yes it is thicker and stronger black scanlines, sort of an in-between consumer SD TVs and VGA monitors, was used alot in the medical and broadcast fields back in the day.

Anyway back to work

1 Like

[QUOTE=solid12345;35778]I like Royale and it set the bar for bringing a CRT experience to the next level, but the mask and phosphors are way too strong for my tastes, I prefer thinner “barely there” scanlines with a finer shadowmask myself. (although I will include a PVM-style thick black scanline style in the next pack for those who like that). [/QUOTE]

CRT Royale is extremely moddable, so you can have it become whatever you want it to. The bloom overestimate feature allows it to stay as bright as it should be. Too many CRT shaders seem to create grey whites and a darker image. You can read about how to mod it here:

http://emulation.gametechwiki.com/index.php/CRT-Royale

This guy has made an Old TV style setting using CRT Royale and it looks pretty good:

At 1440p or 2160p resolutions you could probably get something approaching accuracy, with the phosphor lines vanishing completely. In the current 1080p resolution, the lines are still quite obvious.

[QUOTE=CanonOutput;35816] At 1440p or 2160p resolutions you could probably get something approaching accuracy, with the phosphor lines vanishing completely. In the current 1080p resolution, the lines are still quite obvious.[/QUOTE]

I don’t have a 1440 or 2160p monitor though so I can’t design on anything beyond that and I’ll guess most here are limited to 1080p as well, plus if I already have trouble running royale at 1200p I won’t be able to get it at higher resolutions anyway on my machine.

Also fyi on the sonic video at least he is using my analog pack for the first half then switches to Royale :slight_smile: