Making Old Games Look Good On Modern LCDs?
75th Trombone writes "I'm a fan of several old PC games — the Myst series, StarCraft, Diablo, etc — with 2D graphics that run at a low, fixed resolution. These games all look horrible on modern LCDs. If you run them at their original resolution, they're tiny, and if you upscale them they get all sorts of blurry, pixelly smoothing artifacts. My ideal goal is to run these games at exactly double their original resolution — running 640 x 480 games at 1280 x 960, for example — so that each original pixel takes up exactly a 2 x 2 block of screen pixels, yielding graphics that are perfectly crisp and decently big. I've tried arcane settings in graphics card drivers (new and old), I've tried forcing the OS to run at a given resolution, and I've tried PowerStrip, all to no avail. Short of writing a new, modern engine for my favorite games, is there a reasonable solution to this problem?"
There have been many community-supported graphical overhauls of classic games — feel free to share any you know to work well.
A mod was released for these games which pretty much handles higher resolution. It does that not by up-scaling but rather by showing you a larger section of the hand-drawn pixel-perfect game map, keeping the original crispness.
The mod can be found here.
Nice example screenshots for Planescape: Torment here.
^_^
A number of emulators already have good algorithms for scaling fixed-pixel images that preserve the sharpness while removing aliasing. Wikipedia of course has a page on Pixel art scaling algorithms. The 2 best ones out there are 2xSal and hqx.
The problem is that these only work within emulators that implement the algorithms. This clearly does not work for something like StarCraft. Graphics drivers (both ATI and NV) already have options to scale between virtual and physical resolutions. The ideal solution would be for them to offer different scaling algorithms that can be picked - standard bilinear or a modified one for classic games. Everything "just works" then and you get nice graphics.
I'm not going to hold my breath on ATI or NV ever officially implementing this in their release drivers. However I'm wondering how hard it would be to add an option like this to one of the open source linux X drivers, or maybe even to Wine/DosBox. Also for windows isn't there a way to intercept graphics calls (along the lines of what FRAPs does)? Would it be possible to create a wrapper program that intercepts all the graphics calls and adds a scaling algorithm after each frame is drawn?
TFA has examples exclusively involving line art and that's pretty much the worst case for standard upscaling techniques. The scaling technique you're been searching for is hqx. Too bad there isn't any way to get it.
I dunno, on my 1920x1080 display old games look pretty good using Nvidia (driver) scaling (fixed aspect ratio, scale to fit vertically). Maybe just because its sufficiently high res, scaling artefacts are not particularly noticeable.
There are other problems with playing old games on newer computers - depending on how they handle timing, you'll find that the
Space Invaders zoom down and kick your ass
in ways that they just didn't at the original speeds.
Maybe virtualization can give you a way to slow them down?
Meanwhile, Nethack works just fine...
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
I once wrote a tool called "StarPatch" that lets you run StarCraft in a window. It works by 1) patching a calls to CreateWindow and some DirectDraw initialization functions, 2) patching calls to DirectDraw's Lock and Unlock to return a fake video memory pointer, and 3) periodically copying the fake video memory to the real video memory.
The source code is almost ten years old at this point, but I've made it available again at http://www.cs.washington.edu/homes/supersat/starpatch.c. You'll need to tweak it to work with anything other than StarCraft 1.10, but you can modify it to scale up pixels, etc.
- Karl
I advertised a 17" CRT on Freecycle (London). I didn't expect any replies, but had several! One was from a woman who said she was disabled and would send a taxi round to collect it, but as it was only 10 minutes walk I carried it to her house. She turned out to be a research scientist who'd got an unusual disease (and couldn't walk). She wanted to research it but couldn't get any funding. So, she'd given up her job and was doing her research from home.
This was 2 years ago, maybe now it'd need to be an LCD.
I'm the author of Chocolate Doom, which deliberately maintains the low resolution of the original game, but has to run in modern, high resolution screen modes. One of the problems with Doom is that the graphics are designed for non-square pixel modes (the original game ran in 320x200, stretched to a 4:3 aspect ratio screen), so there's the double problem of having to scale everything up to work in a square pixel screen.
I developed a technique that does a blocky scale-up, interpolating the edges of the blocky "pixels" appropriately, so that you end up with a fairly decent looking result. I don't know if this is useful to the developers of programs like DOSBox, but the code's there if anyone wants it.
were you expecting to see a sig here? perhaps you'd rather see the inside of an ambulance!