ares-emulator / ares

ares is a cross-platform, open source, multi-system emulator, focusing on accuracy and preservation.
https://ares-emu.net
Other
998 stars 124 forks source link

[MD/SNES] Hiding overscan in games cuts off too much of the screen #1675

Open emilos260 opened 1 month ago

emilos260 commented 1 month ago

After disabling the "overscan" option in the video settings, I noticed that every Mega Drive and SNES game was cut off at the bottom of the screen. You can see it clearly in the screenshots below. In Final Fight on the SNES the bottom licensing text is cut off and in Ultimate Mortal Kombat 3 the intro text is cut off also. Is this how it's supposed to work? If so, is it possible to lower the amount of pixels "cut off" by the overscan option?

Steps to reproduce the behavior:

  1. Go to 'Settings', then to 'Video'
  2. Uncheck 'Overscan' under 'Emulator settings' section
  3. See the problem

Screenshots

Final Fight - Arcade Remix (Hack) v1 1 RealGaea 2024-10-24 21-35-09 Final Fight - Arcade Remix (Hack) v1 1 RealGaea 2024-10-24 21-35-36

UMK3 Arcade Restore (Hack) v0 6 Nemesis_c 2024-10-24 21-37-17 UMK3 Arcade Restore (Hack) v0 6 Nemesis_c 2024-10-24 21-37-22

TwentySixHundred2600 commented 3 weeks ago

I have the same issue and from what i can see is it crops about 2-4 pixels too much on both top and bottom. I am thinking it would be something to do with the way it scales the frame.

DanKorell commented 3 weeks ago

Yep, I can also confirm this. Tried v140 and the nightly build from 02-Nov-2024, and both have the issue.

FitzRoyX commented 1 week ago

So long story short, the common resolutions that get tossed around online are basically talking about "active display" aka the drawable region of the output signal. The full signal including undrawable areas is bigger (and emptier). This commit changed us to full signal. https://github.com/ares-emulator/ares/commit/acaa1cabb53f3c62131189d9f5650b87298c3b4f

But the new numbers or math are off somehow with overscan disabled. Sonic 1 should be displaying at 320x224. Instead it's displaying at 319x219. Similar over-chops are happening across other systems.

There's also the added complication of what to do about the padding coded WITHIN active display. The Neo Geo, for example, has 320x224 active display, but half of its games drew 304x224. The SNES is similar, active display is 256x240, but line 0 is forceblanked and a settable bit blanks another 15 lines out. https://neogeo-megashock.blogspot.com/p/neo-geo-resolution.html https://forums.nesdev.org/viewtopic.php?p=112837#p112837

Back when active display was all we cared about, disabling "overscan" meant cutting off this "active padding". Since no one cared about seeing the dead space of a full signal, maybe all that really needed to be done was to rename "overscan" to something like "show full active display for NG and SNES". Though if you read that neo geo link, you might say screw it. It's much more straightforward to just display all of active display than try to perfectly cut off 10 different permutations of active display padding.