Please show off what crt shaders can do!

I hacked an old version of Guest.r shader to pieces lol, removed masks, inserted others, removed some pieces and in the end it run 85 fps on old Snapdragon 600 cellphone (guest-sm runs only 25 fps there). As a comparison fake-lottes runs around 150 but the guest.r shader looks a lot better. I have much stronger hardware like gtx 1070 & 1060 & snapdragon 835 but is always fun doing things like these lol.

grab it here, maybe it runs on your old hardware

https://mega.nz/file/u3xEwDTD#udetJUFA-rvQZO8Nsvd3THh040YGuERy71UIlbQ6yTA

5 Likes

Looking through this thread, I noticed there is very little discussion of PC CRT emulation through shaders. I realize this is because the vast majority of emulated content is 240p, but let us not forget two paragons of 400/480p content: The Dreamcast, and VGA DOS games (you could also make a strong argument for the GameCube and Wii, of course). If we’re about authenticity, I would think having shaders that properly emulate 31KHz resolutions would also be a priority for these!

Long ago, I attempted to modify CRT-Geom to output 480p-esque scanlines for use with DOSBox, along with a few others over at VOGONS. We had some success, but the result was imperfect. Nowadays we have much more advanced shaders to work with, so I set about to see if any of them were able to deliver out of the box.

It turns out a fair bit of them are! Well, to an extent, at least. It depends on how the shader deals with 400+ line content. Some, such as CRT-Easymode, show no scanlines of any kind with such content, even after disabling interlacing, so that and a few others were a no-go as they are. However, others, such as CRT-Royale, scale their scanlines accordingly when fed such “hi-res” content. The scanlines are half as thin as in regular 240p, as you would expect. My favorite so far for this kind of content is CRT-Guest-SM. For some reason, it’s the only variation of the Guest family that has no issues displaying scanlines in 480p, and it has tons of options to tweak.

So how do you go about testing this? Well, as you would expect, the easiest way would be to load a 480p game, such as anything on the Dreamcast. However, the other big category of 31KHz content is VGA DOS games. As many of you probably know, VGA DOS games internally ran at 320x200 for the most part, but in order to actually display them on VGA PC monitors, which did not accept such low-res signals (at least not at 60/70 Hz), they were line-doubled. This gave VGA DOS games their distinctive blocky, pixelated look. Of course, this was also done to CGA and EGA games running on VGA-era hardware for backwards-compatibility purposes, though that is not how they originally looked. However, by default DOSBox does not actually do this. Thus, you must first enable the normal2x scaler in the DOSBox core options. By pre-scaling the game this way, the shader will see it as 400-line content, and the scanlines will scale accordingly. Of course, you can do something similar with any other 240p content if you so wish by, for example, loading the corresponding video filter under Video settings, or perhaps by adding a simple 2x scaling shader pass.

However, there is a catch: if emulating 240p faithfully is already a challenge, how much more so 480p is, especially without a 4K+ display! On my 1080p monitor, the issue is the scanlines darken the image a good bit. I toyed with the settings on CRT-Guest-SM for a while, but in the end, the result I liked most actually had no scanlines to speak of:

Basically, I set the scanline type to 3, which effectively erases the scanlines at that scale, and the mask type to 1, which emulates the dot triad mask of a PC CRT. The image remains quite sharp, but softens the edges just enough to more or less reproduce the look of an older VGA CRT, which actually did not produce noticeable scanlines.

Maybe I need to mess with it more. I have not messed around too much with the newest shaders, after all. But I can tell you this much: I tried the same setup on my laptop with a 4K display, and the results are MUCH better! Definitely more room to work with there. Shame my graphics card is barely able to handle shaders at that resolution.

This is definitely a topic that I think warrants more discussion and exploration, particularly when it comes to DOS games. Sure, lots of people just “240p-ify” them with the current shaders, and it CAN look good, but I prefer to get closer to how they ACTUALLY looked. :slightly_smiling_face:

6 Likes

You’ll need to view this on a 4K monitor at full screen.

I am using Guest ADV in the Mega Bezel with a fine shadow mask and scanline direction multiplier increased horizontally.

To look perfect it would need at least 8K I think.

The dot pitch was so small on those high res monitors, maybe even 8K wouldn’t show the individual triads. :worried:

5 Likes

Are there some reference shots out there of old VGA monitors (beginning of the 90s) displaying low res content? I only have my 17" Samsung Monitor as reference which was build ca. 2001. Even in it’s bad state (practically only 480p downwards usable now) I dislike the look of vga low res on that.

The old analog shader pack has a VGA monitor preset and there are some shaders by I believe leileilol (who is also over at vogons) with a different look.

2 Likes

I did another little hack, Fake-lottes with lottes masks removed and replaced by CRT-geom mask. Should be the same speed with Fake-lottes, probably around 10% faster

https://mega.nz/file/7z4ECLKQ#Tn3B25N6Xu-YagwWtf7namJkJhNRCs-PiWs3Snoztxk

4 Likes

Interesting your text about DOS games. I would like a DOS specific shader.

My current setup:

1 Like

That’s pretty good! Looks like it’s using an aperture grille-type mask, though. Unless I am mistaken, they were not commonly used for PC monitors until after the heyday of DOS, but like you said, even 4K might not be good enough for a truly accurate dot triad mask, so we may have to settle.

This guy has some really good pics from an early 90’s HP monitor. Here’s a few:

That last one compares an LCD to the CRT. As you can see, the really old early 90’s VGA monitors did not really show scanlines, whereas the latter ones with a finer dot-pitch and bigger size typically did. Here’s such an example:

I recall seeing a direct comparison of that Prince of Persia shot above with one from a newer monitor that really drove the distinction between older and newer PC CRTs home, but I can’t find it at the moment. It was quite stark, let me tell you. The newer CRT was much sharper and displayed very prominent line-doubling, whereas you can hardly tell the sprite is line-doubled at all on the shot I linked to here.

3 Likes

Yeah I tried the dot shadow mask and didn’t like it at all, so I fudged a regular shadow mask with the horizontal scanline direction multiplier.

Actually at 240p it looks pretty good. For that reason I am among those that 240p-ify using shaders.

The thing is, most games that run on a VGA using the DIN plug are coded for 640x480 so I’m not sure how you would get a 240p snapshot.

I have a pile of IBM VGA and SVGA monitors lying around but I don’t think any have a composite input. I’ll have to take a look. I do have a color Magnavox but it is RGB, so not VGA.

Maybe one of my Apple monitors. :thinking:

If I have one, I can hook up a C64 and get some shots.

1 Like

Found a good picture of Prince of Persia on a newer PC CRT:

VERY different from the shot above, as you can see. It’s much like the difference between running, say, a SNES game on an average 90’s CRT vs. on a PVM, as in both cases, the use of a sharper display causes more prominent scanlines, the difference being that on the case of VGA stuff, it also reveals the line-doubling something fierce, which may or may not be a good thing.

That said, actual 480p content, such as Dreamcast games, could benefit quite nicely still.

3 Likes

The IBM PS/2 System 25 and 30 both had an MCGA adapter and ran at 320x200 in 256 colors.

There are a couple of scenes in this video where you get a decent view.

It actually looks a lot like my Mega Bezel attempt. :grin:

3 Likes

Thanks, this isn’t exactly how I expected it to look :thinking: I have to see how Prince of Persia looks on my monitor with original resolution and try to take some photos later. So far, I’ve mainly taking some photos of 240p with 120 Hz modelines. Mainly drives the point home that it looks very unlike your typical consumer TV I suppose.

.

2 Likes

crt-nes-mini with an adjustable gray-white mask. Can’t figure out why it doesn’t compile on my cellphones.

https://mega.nz/file/q3AgkJTY#ls3HRRmJ60Ipu5vBbxh7GlWuH8Vux6xmreKQWdum18M

1 Like

A spoiler alert would be nice.

The following 2 video clips show my CyberLab Mega Bezel Death To Pixels (Composite - Sharp) preset combined with the built-in Blargg NTSC Composite filter in the Genesis Plus GX core.

https://mega.nz/file/kYxySCKI#szeKGsQbg5YWFIJMooKw7WG5t-85uBhWxnQQUjNnoCo

https://mega.nz/file/ZUwUhAqL#G7JGAiWbhItVWvsU41peplF6ND-HIkMgswHo3n-BozA

Note: Please download (don’t use preview) and loop for optimal viewing quality and experience. They should play fine using VLC Player, MX Player and MPC-HC.

CyberLab Mega Bezel Death To Pixels (70s RF) Series

CyberLab Mega Bezel Death To Pixels (70s Bad RF)

CyberLab Mega Bezel Death To Pixels 70s Bad RF.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_OPACITY = "0.000000"
HSM_CURVATURE_MODE = "0.000000"
halation = "1.000001"
shadowMask = "4.000000"
addnoised = "1.000000"

CyberLab Mega Bezel Death To Pixels (70s RF - Curved)

CyberLab Mega Bezel Death To Pixels 70s RF Curved.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_ROLL = "14.000000"
HSM_CURVATURE_MODE = "0.000000"
halation = "2.000000"
addnoised = "1.000000"

CyberLab Mega Bezel Death To Pixels (70s RF)

CyberLab Mega Bezel Death To Pixels 70s RF.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_ROLL = "14.000000"
halation = "2.000000"
addnoised = "1.000000"

CyberLab Mega Bezel Death To Pixels 70s Bad RF Without Curvature.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_OPACITY = "0.000000"
halation = "1.000001"
shadowMask = "4.000000"
addnoised = "1.000000"

What I’ve noticed is that display resolution has a huge influence on how these shaders look so I have a couple alternatives that might better suit lower resolution displays.

CyberLab Mega Bezel Death To Pixels 70s Bad RF - 1080p and 1440p.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_OPACITY = "0.000000"
halation = "0.500000"
shadowMask = "4.000000"
addnoised = "0.70000"

CyberLab Mega Bezel Death To Pixels 70s RF - 1080p and 1440p.slangp

#reference "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp"
HSM_FAKE_SCANLINE_ROLL = "14.000000"
halation = "1.700000"
addnoised = "0.700000"

Note: You’ll need to have both the "CyberLab Mega Bezel Death To Pixels Composite Pure.slangp" preset and the “CyberLab Mega Bezel Death To Pixels Composite Sharp.slangp” preset saved in the same “…\Retroarch\Shaders” folder for these presets to work.

You can get those presets as well as more screenshots and video clips here:

4 Likes

Figured I’d try and see what I can play around with on one of the Guest shaders, so I can at least understand what each section does (and it seems to run decent on my work laptop). Usually I just pick a shader and don’t touch options. Messed with some of the halation, and added noise - similar to @Cyber 's RF shaders (I think)

3 Likes

That looks pretty neat! I’m sure the screenshot looks noticeably different from the live preset in motion due to the use of noise. Have you observed this as well?

2 Likes

Well, do keep in mind everything I’ve said thus far applies ONLY to VGA games and CGA/EGA games running in VGA compatibility mode. Most CGA and EGA games originally ran at 320x200@60Hz, and so were proper 15KHz standards (the exception being EGA’s hi-res 640x350 mode, which was 24KHz), and so were their respective monitors, so it is not at all incorrect or inaccurate to display those games with 240p shaders or custom modelines on real PC CRTs (they will look quite a bit sharper than through their original period-correct monitors, though, as those were often essentially glorified TVs with RGB input).

However, once we got into the VGA era, even though VGA hardware was backwards compatible with both CGA and EGA, due to VGA monitors no longer being able to handle 15KHz (outside uncommon triple-sync monitors that could handle 15KHz, 24KHz, and 31KHz), it was made so CGA and EGA modelines were line-doubled and displayed at 70Hz refresh rate, which may introduce judder, as you might imagine. It wasn’t accurate, but hey, it got the job done back then! This is likely how many (most?) people remember and played CGA and EGA games, as many were often packaged on those old shareware CDs that made the rounds throughout the 90’s. Complicating things further is the fact that many DOS games actually let you choose from a variety of display modes, including CGA, EGA, Hercules, VGA, MCGA, Tandy, and PCJr. Prince of Persia is one such game, so honestly, it’s pretty much fair game to display it at 200p if you are so inclined. :slightly_smiling_face:

2 Likes

Oh the still shot definitely doesn’t do it justice. Seeing your 70s RF presets in action on my home laptop (which runs it way better than my work one) gave me the inspiration to try similar things as a learning experience :grin:

1 Like

Just to clarify, I’m perfectly aware of all that. None of those pictured games by me above are VGA games. The gaps in that second PoP are just so large, I never recall any game looking like that, and indeed it looks on my monitor more like the first pic. Might be just another sign of it’s last days, it certainly used to be sharper (and brighter, but part of this is due to the photo.)

If I recall correctly, that picture was off of an aperture grille 19" LG Flatron, which explains why the gaps are so large. It’s probably TOO sharp for these old games. I like the look of your monitor better, even if it’s seen better days.