Dynamic Overscan?

Hi all. I was running through FF6 when I saw the game has black borders all around, past the title screen, when other snes games fit the screen perfectly (or so).

I was just wondering how this worked on original hardware, plugged to a CRT:

  • was this overscan cropped dynamically by the console, so no one would notice those borders?
  • if so, is there some emulation options somewhere to simulate this “smart cropping”?

Of course, the easiest workaround would be to use shaders and crop overscan, but it’ll do that for the whole game, so even parts that fit screen properly, naturally.

It seems to happen as well on Sega CD with Out of this world 2. So I guess some games used smaller resolution for technical constraints, which resulted in thos black borders all around.

Thanks for your answers

Cheers

1 Like

Hi, I’m not sure I have an answer to the question about how the overscan worked on console.

Not sure if you’ve already tried them but there are options in the retroarch video settings -> Scaling settings for Crop overscan:

The Mega Bezel also has some auto cropping for black bars if you want got get something further than the Retroarch or core options gets you.

1 Like

Hi man, yes I know your bezel shaders, amazing work btw.

My “crop overscan” option is enabled (by default I believe) and without it, there are black borders on all SNES games.

I was just talking about this specific game FF6. Other games fit fullscreen perfectly.

1 Like

Actually there are lots of SNES games with inconsistent black borders like when your are in a town, overworld map, battle screen, menus, you’d see these black borders come and go, become thicker or thinner, move from top to bottom (FF6, DQ6, Chrono Trigger, and lots of others) They are indeed very annoying when you use overlays because they will always be there unless you choose to hide some visible areas altogether.

I know Mega Bezel has this magical feature that dynamically detects and crops in-game borders but yeah you need a more powerful PC and it might not support your favorite shaders. Would be great if RA can implement something similar so it can dynamically adjust the scale factor and aspect ratio of the overlay in use. It’s also useful to people who use generic bezel overlays for every single game so they don’t have to manually adjust the overlay scale and aspect ratio to match the viewport.

2 Likes

On an actual CRT you see the borders as well, more or less depending on how it’s set up. It wouldn’t be unusual for the “full-size” games to miss a few pixels on top/bottom and the sides, there is a usually a bit of leeway.

On an actual CRT you see the borders as well,

As much as on my screenshot? Or the CRT handled them better and kindof cropped them dynamically?

I tried some of your presets and black borders remain (on FF6 at least). Which preset or shader should I look for, exactly please?

1 Like

It’s in all of them, in the cropping settings you set your crop to the maximum you could want, in the FF example let’s say that’s 10%, then you set the crop mode to only crop black, I think this is mode 1.

Let me know if you have any issues

2 Likes

The first question I have already answered. As for the second one, there is no such thing as dynamic crop, there is either something drawn there or not. If you think those borders are extensive, consider that for example a SEGA Master System can’t fill a 4:3 CRT’s screen without border color, or movies filmed for cinemas which were as wide as they are today. That’s what people were used to back in the day.

1 Like

The only footage I can find of this game running on original hardware and on a CRT TV is this:

https://www.youtube.com/watch?v=LRQlL7BBXiI

If whoever uploaded that video is still around, you can ask them in the comments about it.

I did ask him. On the video, we can clearly see that the game fills the whole screen…

I verified that FF6 is full of black borders:

2 Likes

Thank you! An age old mystery finally solved. :sweat_smile:

So it’s clear people were simply adjusting their TV’s overscan settings to get rid of them (if the TV had such a setting.) So basically with RA, you should use your CRT shader’s overscan setting and save it as a per-game preset.

Here’s how I do it with the guest-advanced shader:

My shader preset for the Snes9x core is stored in config/Snes9x/Snes9x.slangp. It looks like this:

#reference "../../shaders/crt-guest-advanced/crt-guest-advanced-ntsc-fast.slangp"
quality = "-1.000000"
ntsc_fields = "1.000000"
ntsc_phase = "3.000000"
... etc, etc ...

When running FF6, it gets loaded automatically. Now go to the shader menu in the quickmenu, and save the shader preset with “Save Game Preset”. This will create config/Snes9x/Final Fantasy III (USA).slangp (or similar.) Open that file in a text editor and delete everything in it and put a single line in it:

#reference "Snes9x.slangp"

You can now adjust the overscan setting in the shader parameters, and do “Save Game Preset.” This will only store the overscan settings in the preset. All the other shader settings will come from the core preset.

1 Like

Borders are clearly visible in the video as well.

Yes but I find them not as big as Hunterk’s picture

That’s what I did, but I was just wondering if cropping title screen and possible other “well filling screens” was the best workaround. It seems that’s a “mandatory” trade-off in order to avoid those black borders 99% of the time.

WOW, that’s quite exceptional! How does it work? It seems to detect black pixels only?

Among the multiples passes, which shaders do this exaclty?

1 Like

Yup it looks for just black pixels and adjusts the crop. There v is a threshold so if some pixels are almost black which happens with the dithering from one of the n64 emulators.

So the Mega Bezel is kind of a behemoth where some passes do calculations and cache them and then other passes pull from this.

Basically the info-cache pass – which is early in the chain – figures out the cropping values, then in the crt pass in a custom version of guest.r’s shader uses these cropping values to sample the image without the cropped areas.

If you want the simplest mega bezel with just some of the screen control and cropping, you can use the POTATO version, and set the graphics brightness to 0 and set the aspect ratio parameter to full then it will work similarly to how a regular crt shader does, taking up all the viewport space.

1 Like

Maybe I mistweaked something but it cropped too much when the title screen of a game has a black background. There are black pixels everywhere so the shader detects them as croppable? Is this the downside of this kind of automation?

1 Like

Yeah, that’s why you specify a maximum that you want cropped so it doesn’t crop a lot more when you just have a black background. So certainly a limitation since the shader only sees the current image and does its logic on it.

2 Likes