Tearing on VGA CRT through IO board

Discussion about displays and related hardware including MiSTer filters and video settings.
User avatar
bootsector
Posts: 126
Joined: Sun May 24, 2020 6:58 pm
Has thanked: 3 times
Been thanked: 15 times

Tearing on VGA CRT through IO board

Unread post by bootsector »

Hi guys!

I get screen tearing very frequently with my CRT VGA monitor connected to MiSTer through the IO board. I've never noticed that happening on HDMI though.

In order to fix this, specially in the NES and Genesis core, I switch the system type back and forth (NTSC -> PAL -> NTSC) inside the core and the tearing disappears. Is that something that could be automatized during the core initialization to make this "fix" automatic?

In time: I have the scaler enabled through VGA so I get consistent image even on cores that change the picture to 15Khz, which my monitor doesn't support.

Here are my settings:

Code: Select all

vsync_adjust=2
video_mode=1280,80,136,216,960,1,3,30,102100
vscale_mode=1
vga_scaler=1
Cheers!
FoxbatStargazer
Posts: 339
Joined: Thu Dec 10, 2020 5:44 pm
Has thanked: 79 times
Been thanked: 63 times

Re: Tearing on VGA CRT through IO board

Unread post by FoxbatStargazer »

I've had trouble with values of 1 showing up in the vertical blanking specs, especially as Mister adjusts the refresh rate down slightly from the mode you provide. Try making a mode with this site.

You might know but keep in mind that forced_scandoubler=1 is another way to get 15khz cores to display on your monitor rather than vga_scaler.
User avatar
bootsector
Posts: 126
Joined: Sun May 24, 2020 6:58 pm
Has thanked: 3 times
Been thanked: 15 times

Re: Tearing on VGA CRT through IO board

Unread post by bootsector »

FoxbatStargazer wrote: Tue Sep 14, 2021 3:54 pm I've had trouble with values of 1 showing up in the vertical blanking specs, especially as Mister adjusts the refresh rate down slightly from the mode you provide. Try making a mode with this site.

You might know but keep in mind that forced_scandoubler=1 is another way to get 15khz cores to display on your monitor rather than vga_scaler.
Thanks for the tip! What column should I refer to on that website? For CVT, this video_mode gave me tearing on the NES core right off the bat:

Code: Select all

video_mode=1280,80,128,208,960,3,4,29,101250
forced_scandoubler I would like to avoid as much as possible, specially for cores that switches between 15Khz/31Khz, such as Sega Genesis (Sonic 2 split screen vs non-split screen).
FoxbatStargazer
Posts: 339
Joined: Thu Dec 10, 2020 5:44 pm
Has thanked: 79 times
Been thanked: 63 times

Re: Tearing on VGA CRT through IO board

Unread post by FoxbatStargazer »

CVT is right, if that didn't help you I probably can't offer much more. One of my two SD TVs does not like 240p modelines from that site either. All I can say beyond that is try some of the standard built-in modes with numbers that may have more optimal timings, particularly one closer to the "standard" modes your monitor is probably advertised to support like 1280x1024, 800x600, 1024x768, etc. Might also help if you have another VGA source to test if your monitor is in good condition, even a cheap HDMI->VGA converter connected to a modern PC.
User avatar
bootsector
Posts: 126
Joined: Sun May 24, 2020 6:58 pm
Has thanked: 3 times
Been thanked: 15 times

Re: Tearing on VGA CRT through IO board

Unread post by bootsector »

I've been using, with good results so far, this setting:

Code: Select all

video_mode=1280,80,136,216,960,3,4,31,107750
Will keep playing with it to see if any tearing come up.

This was generated by the suggested website for my resolution with the "Margin: Yes" setting enabled.

I also needed to change Menu core resolution because the above gave me black bars everywhere:

Code: Select all

[Menu]
video_mode=6
FoxbatStargazer
Posts: 339
Joined: Thu Dec 10, 2020 5:44 pm
Has thanked: 79 times
Been thanked: 63 times

Re: Tearing on VGA CRT through IO board

Unread post by FoxbatStargazer »

That seems a little odd because the "margin" setting usually also increases the pixel count: 1312 and 1022. Its just kind of arbitrarily increasing the resolution based on your input settings, and adjusts the vertical and horizontal blanking to match. If you ignore the increased resolution and are just grabbing the increased blanking settings maybe that's enough; the whole purpose of them is to provide a cushion for the sync pulse, and enough time for your electron gun to physically aim itself before it starts scanning. Maybe your monitor is just a little slow and needs that bit of extra blanking.
thorr
Posts: 317
Joined: Mon Jul 06, 2020 9:37 pm
Has thanked: 48 times
Been thanked: 49 times

Re: Tearing on VGA CRT through IO board

Unread post by thorr »

I can't speak to changing between NTSC and PAL to fix the problem because I no longer have a VGA CRT, but I can say that every core seems to have its own video timings at different refresh rates. If you use forced_scandoubler=1 whenever possible, you are going to be running at the native refresh rates and you should not see any tearing. I am not sure if using the scaler at a fixed frequency adjusts the timing of the core so there is no tearing, or if the core remains the same and gives you tearing because the frequency is slightly off. If you have specific cases where you want to use the scaler, you can easily set up an alternate MiSTer.ini and switch between them as needed. The rest of the time, I would use forced_scandoubler=1.
User avatar
bootsector
Posts: 126
Joined: Sun May 24, 2020 6:58 pm
Has thanked: 3 times
Been thanked: 15 times

Re: Tearing on VGA CRT through IO board

Unread post by bootsector »

Still get tearing after my last update. That's so annoying. I will keep doing the signal region change trick (NTSC -> PAL -> NTSC) until I find some definitive solution. Will keep you guys posted. Cheers!
Post Reply