Upscaling The Sierras

side by side of upscaling in the AGI engine

If you played many games back in the mid-80s to 90s, you might remember the iconic graphics from Sierra’s Online Adventure Games. They were brightly colored (16 colors) and dynamic with some depth. To pay homage, [eviltrout] worked to upscale the images. Despite being rendered at 160×200 at 16 colors and then stretched, storing all those bitmaps even at only 4 bits per pixel would take all the storage available on the floppy disk. The engineers on the game decided instead to take a vector approach to a raster problem.

When [eviltrout] came through to try and upscale the backgrounds, he started by writing some code to extract the draw commands from the engine of the game, known as Adventure Game Interpreter (AGI). Comparing the vector commands to equivalent PNG versions with the best compression, the AGI vector versions were around half the size. Not bad for a couple of game developers in the 80s. Since it is all vector commands under the hood, it should be relatively simple to draw them at a much higher resolution. At least, that’s what he thought. The first issue was with flood fills. Since the canvas is larger, there are gaps between lines, and the flood escapes. A few approaches were taken, such as using a low-resolution reference and marching squares, but neither was satisfactory. Eventually, [eviltrout] expanded flood fills and used thicker lines. He also first rendered to a lower resolution and connected neighboring lines of the same color. Finally, he used ImageMagick to denoise white specs in the output.

We find the effect charming, but some might say you’re distorting art into what the artist never intended to be. But, as with all graphical enhancements, some artistic liberties are being taken without the original artist involved. The code is available on GitHub under an MIT license. Video after the break.

22 thoughts on “Upscaling The Sierras

  1. My lazy version of this would be to simply render them at the original resolution, then just create an SVG square per pixel. Perfectly scalable at that point. Not necessarily a square pixel, though. I believe these use a 2:1 pixel size, at least for the AGI versions, SCI (King’s quest IV, Space Quest III) had square pixels. And then it would matter what the pixel ratio of the monitor was too. But still, I’d use the same basic concept to convert them to lazy man pixel SVGs.

  2. If two lines in the low-res image connect, couldn’t he use that information to extend (make them connect) in the high-res image and then use flood-fill?
    Probable would need to do that at the edges of the image, too. And as is with every theory, there are probable some edge cases or details that would need to be taken into consideration, but that could be another approach.

    1. Because they don’t connect. They end up at adjacent pixels. There may be many lines ending in an adjacent pixel, so it’s not a simple task to decide which lines should connect and which shouldn’t.

    2. I agree with LonC – if the Cartesian coordinates of each line connected at 330×200, then surely they still would when scaled up.
      I’m guessing the issue is where lines ended at a mid-way point along a different line – which touch at the original scale but not at the higher resolution.

    1. @Ian said: “Sierra Online’s Adventure Games Not Sierra’s Online Adventure Games. The games are not Online. The company was Sierra Online.”

      Searching for: Sierra Online online games – immediately reveals anyone can now play all of Sierra Online’s games online for “free” (ad supported). Just go here:

      * All classic games published by Sierra On-Line, Inc. Select your favourite (sic) classic game published by Sierra On-Line, Inc. and play it online in a web browser, for free!

      https://playclassic.games/publisher/sierra-on-line-inc/

      1. Thanks for the tip! I had problems getting Freddy Pharkas Frontier Pharmacist running properly in Dosbox.
        I see Sierra also uses Dosbox on the website and I also notice they too have some problems with lagging and stuttering sound.
        I also enjoyed Robin Hood, Conquests of the Longbow in the nineties.

  3. While I don’t doubt that the upscaled results included in the video have been curated, the result are pretty amazing. The end result has all the ‘charm’ of the games of that period, but on a modern high resolution display they don’t stab you in the eye,

    Amazing work !

  4. It seems that “eviltrout” has “issues” with people pointing out the following even though it is a FOSS tool too, “Just running GMIC stylize over upscaled 4K versions of the example images on github can give amazing results, but that would not be realtime, yet.” Trust my on this one, go and actually try it because the results work so very well with the output of eviltrout’s code. GMIC is scriptable too.

    1. Once Sierra started supporting EGA they quit putting much effort into CGA graphics, and quit doing the low-res 16 color mode officially supported by PCjr and present but undocumented in Tandy 1000, genuine IBM, and most clones of CGA.

      Their early games like the original King’s Quest used dithering to make the best of the two horrible 4 color pallets IBM restricted 320×200 mode to. Later Sierra games had big swaths of solid colors in 4 color CGA mode.

      It would be interesting to know why IBM didn’t allow free selection of any 4 of the 16 available colors. People would then have found ways to do line by line color switching so every one of the 200 lines could use four different colors.

      EGA’s 320×200 16 color mode made it fairly easy to do game graphics that worked on both EGA and Tandy 1000, and hardware modded PCjr with RAM upgrade.

      IBM could have really pushed selling the PCjr RAM upgrade if they’d contracted Sierra to do a 320×200 16 color King’s Quest and bundled it with the upgrade board. If only IBM hadn’t gone with the stupid chicklet keyboard…

      1. The AGI games were technologically already obsolete when they came out.

        Not necessarily their concept, though.
        The way the story telling and interface worked, was okay.
        And the games itself were fun.

        I suppose, those SCI0 games showed how modern AGI titles could look like.
        Both the parser and pointing device support were included.

        AGI.. Even back in the 80s, say around ’86/’ 87, the AGI graphics looked dated,
        which some people at the time rightfully complained about.
        Both Leisure Suit Larry – In the Land of the Lounge Lizards and Kings Quest III – To Heir is Human could have looked a bit better in SCI0.

        However, the extreme low resolution made porting easy. Aking to porting later GameBoy games (which didn’t exist at the time).

        AGI games ran on low-end systems, thus, like for example:
        TRS-80 Coco, Apple II, II gs, PC (Composite CGA)

        https://www.mobygames.com/game-group/game-engine-adventure-game-interpreter-agi

        Personally, though, I assume AGI looks best on platforms with blurry composite displays. Say Apple II or PC+CGA. They hide the imperfections, blur the dithering patterns and enhance the imagination of the players.
        NTSC monitors will provide artifact colours, too. Players will see things that they aren’t sure are really objects or just interference/artifacts. An RF connection will intensify this experience even more, but makes the text hard to read, which is counter productive.

      2. The dithering wasn’t for that purpose. It was explicitly using CGA artifact colors. After the developers stopped having access to a CGA card hooked into a TV I guess they stopped being able to choose colors for that mode. Or they assumed that end-users didn’t have CGA cards hooked into TVs…

        1. The latter. Video Out was really just a CGA thing, as I believe the distortions in NTSC video made it unsatisfactory for clear text reading at higher resolutions. (See any attempt to do 80 Column text over NTSC)

Leave a Reply to MathiasCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.