No, MS-DOS games weren't widescreen: Tips on correcting aspect ratio
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
My last two articles here on Gamasutra were long rants about the preservation of gaming history, but today I'll instead share some cool tips I found during my ongoing research for the CRPG Book Project. This is a VERY common issue, so I hope this information helps to clarify some doubts.
The rise of oval shields
As I went through countless blog posts, forum thread, articles,Â documentaries and even books, one thing really stood out (and bothered me to no end): widescreen old games.
Now, we all know that widescreen monitors only began to appear
recently about 15 years ago. Before that, we all used those huge, blocky CRT monitors. Most people in the industry, except the really young ones, still remember those. And they were 4:3Â â€“ distinctly so.
So why the hell we keep seeing so many widescreen screenshot of old games out there?
Only one of these is correct; I would bet on the one where the Round Shield is actually round.
The thing is, most MS-DOS games were actually rendered in 320x200, which is a 16:10 aspect ratio and thus widescreen â€“ but they weren't displayed that way. I won't pretend I know all the technical details â€“ there are way better sources for that â€“ simply put, the CRT monitors back then stretched images to fit the screen.
The 320x200 image was stretched to fit the entire 4:3 screen, to something close to 320x240. What today we see as a sharp, square pixel was actually a blurry rectangle back then, about 20% taller than wider (the Amiga, Apple II, Atari ST and other home computers all had different resolutions, but the principle is quite similar).
It should be a simple matter to solve, but digital displays like the ones we all use today cannot stretch a pixelÂ â€“ it will always be perfectly square, with a 1:1 aspect ratio. And this is a problem.
Guybrush put on some weight recently
If you try to "force" a re-scaling simply by making the 320x200 image 20% taller and hoping for the best, the computer will shrug at its human master, long for the coming of SKYNET and simply add an extra duplicated pixel row every 5 rows, distorting everything in the process.
This may sound like a minor thing, a silly obsession of a nostalgic fan that no one will notice, but just look at the damage it causes on our old friend Guybrush:
Yeah, the anime eyes and the long goatee don't really fit him. But many recent fans probably are used to seeing him as a short and chubby guy, not the dashing pirate he was back in the days.
It goes without saying that this does more damage than helps and so, to avoid tempering with the image, by default most emulators will play games with the wrong aspect ratio, using square pixels in a 16:10 resolution (it also helps that it fits nicely on a widescreen monitor).
For those who just want to play, most emulatorsÂ â€“ if not allÂ â€“ come with a "Correct Aspect Ratio" option that will make the game play in its original 4:3 format. Games bought on GOG usually come with this enabled by default, God bless them. But while it may look perfect during play, there is a subtle distortion still.
Emulator devs are usually aware of this, and so any screenshot you take, even with the "correct aspect ratio" option enable, will be a 320x200, 16:10 imageÂ â€“ free of any distortion, but a problem to those who need accurate screenshos for an article, video, book, etc...
So, how do we fix this? Well, we cannot stretch pixels like the analog monitors did. And since a pixel is the smallest graphical unit we have, you cannot "borrow" 1/5 of a nearby pixel either. What we can do is multiply an image's width by 5 and height by 6, so that every pixel becomes a 5x6 "mega-pixel", and thus proportionally 20% taller:
If you take a nice .png, .gif or .bmp screenshot (please don't do it with a .jpeg), throw it in Photoshop or any other image program and enlarge it this way (using Nearest Neighbor interpolation to keep it sharp), you'll get a clear and accurate image, free of distortions:
The side effect is that a 320x200 image will become a monstrous 1600x1200 image. Ugh.
The unsolvable part of the problem
If you're working with print or video in mind, the increased resolution will be a nice bonus. However, most of the time you'll just want it for a website or monocled forum post rantingÂ about the golden days, and 1600x1200 images aren't exactly web friendly...
Sadly, there's no perfect solution here; every way you approach this will result in some distortion. Since going for 320x240 will result in heavy distortions and a very small image for today's standards, I jumped a step and resized them all to 640x480. Bellow are a few tests:
Directly upscaling your 320x200 screenshot into 640x480 using a bilinear resampling is a bad idea, as the image will get very, very blurry.
Directly upscaling it to 640x480 using the Nearest NeighborÂ resampling has exact same result you would get if you first 5x/6x upscaled it and then downscaled it using Nearest Neighbor: the image will remain very sharp, but will have a few distortions â€“ as seen on Guybrushs's thick mustache.
The final option is to first 5x/6x upscale it, and then downscale it to 640x480 using a bilinear interpolation. The image won't be as sharp, but it won't have heavy distortions either.
I tried a few other alternatives, such as Lanczos resampling, but the result were mostly the same. It's an impossible request at heart, so we can only choose what gets closer.
Personally, I think the last option is the bestÂ â€“ upscaling 5x/6x first, then downscaling with a bilinear resampling. Games didn't look all that sharp back then, so a bit of blurriness is an acceptable tradeoff for a more faithful image.
EDIT: Per Olofsson on twitter gave a better solution: "Try nearest up to 640x1200 and then bilinear down to 640x480 for an even sharper image." This way the image remains perfectly sharp horizontaly, with only a slight vertical blur:
If you want to have a good 640x480 screenshot of a MS-DOS game on your website, I thoroughly recommend using this approach. For a print or video, use the 5x/6x upscalling, which will produce a huge but 100% accurate image.
Only part of the problem
Of course, all that still doesn't perfectly replicate how games were back in the day. Pixels didn't look so sharp, and there were scanlines, curved screens, color bleeding & offset,Â signal noise, etc... As this recent article by Kyle Pittman shows, it isn't something easy to replicate.
But it was something intrinsic to those games. Designers mastered their tech and achieved marvels by exploiting the system. A notorious example being the waterfalls in Sonic:The Hedgehog 2. On an emulator, they look just like solid lines of pixels. But when you factor in the color blending old Tvs had (here simulated via the Fusion emulator), they actually look like a continuous, flowing waterfall you can walk behind â€“ no small feat back then:
Can't do that, can you The Order:1886?
Unfortunately, not every emulator can simulate CRT monitors, and scanlines, color blending, noise, the fishbowl effect and all that will look weird in a still screenshot. I definitely can understand why most people wouldn't want such level of "accuracy", so to say.
But let us all agree that next time we present a screenshot of game from the 80's and early 90's, we should at least keep 4:3 images as 4:3 images, round shields as round shields and Guybrush as that charming pirate we all love, ok?
Special thanks to NiektĂłry and Crooked Bee for helping me figure this out.