0%

Retro Console Emulation and Integer Scaling

Retro consoles and handhelds rendered their graphics at much lower resolutions than today’s displays output. Integer scaling is a method of resizing rendered output by multiplying the native resolution by whole numbers, resulting in a crisp, pixel-perfect output. The drawback of integer scaling is the image may not completely fill the vertical space of your monitor, leaving black bars. The next logical question, and what I’d like to answer here is: What is the optimal resolution for minimizing black bars with integer scaled retro systems?

Why Integer Scaling?

While I’m aware there are different techniques for scaling, integer scaling is my preferred method to keep those crispy pixel edges intact. Any other scaling will introduce some kind of interpolation, resulting in unevenly sized pixels and softening of the image. The quality of the interpolation depends heavily on the algorithm used and the resolution of your display (higher is better/cleaner). While integer scaling typically doesn’t fill the full screen, I’m a person that’s happy to trade some pixels for clarity. Enough opinions, let’s get to some data!

Target Acquisition

Retro systems were mostly 4:3 aspect ratio and max out at 16:9, making the vertical resolution the limiting factor in scaling. In order to get the most of the rendered image on the screen, we want to scale as high as possible without going over the target vertical resolution, which is the number before the “p” for HD resolutions. We’ll be looking at 720p, 1080p, 1440p and 2160p/4K.

If we take a look at the Emulation General Wiki page for Console Resolutions, we can determine the target vertical resolutions by system:

Vertical resolutions of 192px or below typically target handheld devices, while 224px and 240px (and their doubled versions 448px and 480px) are quite common for home consoles starting with the NES.

Crunching The Numbers

The chart is highlighted with optimal vertical resolutions for each base and HD resolution. In order to find the optimal HD resolution, we need to know what the percentage of vertical resolution is taken for each optimal integer scaled value, since percent not filled directly equates to the size of black bars. Let’s take a look:

Some observations:

  • 720p is by far the worst for maintaining scaled outputs between systems, with a range from 62-100% scale. 1440p is the best with 93-100% scale.
  • 1080p never hits 100% for integer scaling retro system resolutions.
  • 1440p and 4K have the best overall fill percentages, which makes sense given the higher pixel count.
  • The fill percentages for 4K displays start falling beyond 240p.
  • 272px vertical resolution (PSP) only scales beyond 90% at 1440p.

Conclusions

It seems clear that 1440p is the overall optimal resolution for integer scaling at this time, with HALF of the common resolutions scaling to 100%, and the others no smaller than 93.3%. 4K is also a great option if your games are staying at or below 240p, especially if you’re consuming 1080p or higher content on the same display. 1080p may be the most prevalent display resolution right now, but it’s certainly not the best for integer scaling, with only 144px scaling to over 90%. It’s also probably a good idea to steer clear of 720p integer scaling beyond 240p, unless you want some extra smol windows to play in.

Another factor will be system performance. It’s much more difficult to push 4K than 1440p, so keep that in mind when deciding. Generally speaking, upscaling retro games to 4K on PC is doable on a lot of machines, but pushing 4K on a mobile device will likely make higher end emulation like Dreamcast, PSP and GameCube a quite a bit more challenging, while 1080p or 1440p will look just as good on a high pixel density mobile device screen.

Hopefully this information will be helpful for those of you looking to optimize your emulation setup. At the very least, I know what resolution displays I’ll be using for now…