VOGONS


The Quest for Pixel Perfect DOS Emulation

Topic actions

First post, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie

I hope I am not overstaying my welcome by creating two threads on the same topic!

A while ago I started asking questions about how to run DOSBox at native resolutions on a CRT monitored. I ended up going down quite the rabbit hole trying to figure it out, and so I wanted to post this to help centralize all the community’s knowledge and hopefully make it easier to find and reference if anyone wants to reproduce my results.

Original thread here: Dosbox without scaling?

The goal of this project is to make DOS on a modern PC look as close to identical as possible as a real DOS machine. This means identical resolution, identical refresh rate, and no software scaling. For example:

Lemmings in DOS on a Voodoo 3 PCI:
ROulvSL.jpg?1

Lemmings running in Dosbox on a windows 10 machine:
pQXWK9M.jpg?1

What do I need?

  • An OS + graphics driver that allows you to create custom resolutions
  • A graphics card with a VGA output
  • A CRT or DOS friendly LCD VGA monitor

Software

Mainline DOSBox (tested on 0.74-3)
Or PCem (v17)

My machine uses Windows 10 with a 980ti graphics card, so that is what I’ll be showing off here.

DOSBox Settings

Locate your DOSBox.conf configuration file or create one.

Change the following settings:

[sdl]
fullscreen=true
fulldouble=true
fullresolution=original
windowresolution=original
output=surface

[render]
aspect=false
scaler=normal2x

The surface ouput worked best for me - other modes could occasional have screen tearing.
If you are using a Nvidia graphics card, within your control panel, make sure "Low Latency" mode is set to "on" or "off" but not “Ultra”, as this can cause screen tearing even when you enable double buffering.
You will want the mainline release of DOSBox. I tried a couple of DOSBox forks and none of them worked quite right – although your mileage may vary.
PCEm Settings

Start your machine, and then under "Video" -> "Resolution" set to "Original"
Fullscreen mode-> Exclusive
Make sure VSYNC is checked.
Output stretch-mode -> None
Output scale->1x
Note* PCem has a problem with a couple of oddball resolution. It only effects a handful of games, but in general DOSBox works a bit more reliably for this setup.
Add Custom Resolutions
You can use the Custom Resolution Tool or your graphics control panel to create custom resolution. In linux you should be able to add custom modelines (not much of a linux guy myself so you’ll have to try it out).

For CRU, the download and instructions are in the link (Windows Only, Vista or newer):
https://www.monitortests.com/forum/Thread-Cus … ion-Utility-CRU

For my Nvidia card, I found that creating resolutions in my graphics control panel allowed me to add many more custom resolutions than I could in CRU, so that is what I recommend.
https://nvidia.custhelp.com/app/answers/detai … tom-resolutions
https://www.amd.com/en/support/kb/faq/dh-032

From what I have read, custom resolutions are not supported on Intel HD graphics. You will need an ATI or Nvidia graphics cards.

No matter what method you use, you need to manually configure your display timing. The custom resolutions you need to add can be found here:
https://docs.google.com/spreadsheets/d/14lErg … dit?usp=sharing

Here is an example using the CRU:
c5T75h3.png
The game or application that uses that resolution are noted in the spreadsheet, so you can use it to check that everything is working. Once each resolution is added, you should be good-to-go.

Ok, now that the tl;dr portion is over, let's discuss some of the nitty gritty details.

DOS Resolutions - A Primer

As many of you know, most DOS games run internally at 320x200 resolution, which is scan doubled by the VGA card to 640x400 with a 70hz refresh rate. That spells all kinds of problems for today’s modern, fixed pixel, 60hz displays.

  • 320x200 is a 16:10 aspect ratio that gets squished to 4:3 on analog monitors. To get the correct aspect ratio on modern LCDs you must use software scaling algorithms
  • 60hz <> 70hz, so DOS on modern display panels feels juddery and sluggish. Gross.

That isn't the whole story though. The history of DOS includes many display standards, including CGA, EGA, VGA, and SVGA, each generation adding new features and display resolution while supporting legacy modes through backwards compatibility. What is more, the horizontal sync rate of PC monitors changed over the years as well, from 15khz, to 22khz in the EGA era, to 31+ khz on VGA monitors and modern displays.

As if that wasn't enough, DOS programmers could use all kind of tricks to add nonstandard display modes to their games and applications.

Fortunately, a lot of this can be simplified. When it comes right down to it, all but a few DOS game use resolutions that are cousins of the following two:
640x400@70hz - 449 lines
640x480@60hz - 525 lines

And indeed, the vast majority of DOS games run at exactly 320x200 scan doubled to 640x400 (mode 13h) or 320x240 scan doubled to 640x480 (mode x).

Notable exceptions are applications that render in text mode, like the DOS prompt (720x400@70hz or sometimes 720x480@60hz), which in the land of CRTs (where the horizontal resolution changes very little) this just means that text modes have a more active pixels and a slightly higher pixel clock than other graphics modes.

Exceptions to the rule

The following blog post was very helpful in tracking down those rare exceptions. There is a lot of interesting things to explore here:
https://nerdlypleasures.blogspot.com/2014/09/ … tions-when.html

First off, let's start with Lemming. The title screen in VGA mode runs at a none standard 640x350. What gives? Here it is running natively in DOS:
https://imgur.com/UNIzK8O

Notice the blank scanlines and the top and bottom? What is happening here is that Lemmings is using what is essentially the standard 640x400 resolution and choosing not to draw on 50 of the 400-vertical line. This gives you an active vertical resolution of 350 pixels, while actually having the same number of total lines at the standard display modes (which is 449 vertically). If you center the image within those 449 lines you get what we see in DOS. It is a “cousin” of the standard 640x400@70hz resolution that I mentioned before.

So, I copied my 640x400 resolution and changed the active pixels from 400 to 350. This pushed the image to the bottom of the screen instead of the center, so I increased the vertical front porch, which essentially moves the image "up", and got this.
https://imgur.com/HHF4LEC

Hm... close, but not quite right. What is going on here?

This is the probably the most frustrating part about this project. There is no such thing as a "standard" set of display timings for DOS. Every single graphics vendor implemented their own display timings a bit differently, and every single resolution for each piece of software can alter the display timings ever so slightly to get a different result. The exact same game running a different computer could have the title screen shifted a bit further up or down, a bit fatter on the horizontal axis or thinner, and more. What I ended up doing is reducing the total number of horizontal lines a bit, which stretches the image some, and then increased the front porch to re-center the image. It isn't perfect, but its close enough.
https://imgur.com/PGENe4M

Most nonstandard DOS resolutions are of this variety. Basically, take a standard DOS resolution, remove some of the active pixels and then manipulate the total number of pixels and the front porch to position on the screen. Not all DOS games put them dead center - some leave them on the top or bottom. But roughly center was easier, so that is what I did in these cases.

The Same, but Weirder

There were a couple DOS resolution though that look like one display standard but are actually completely different. Let's look at an old classic, Jazz Jack Rabbit. J-J uses mode 13h for the title screen, menus, and loading screen. That is 320x200@70hz, scan doubled to 640x400, with 16:10 aspect ratio squished down to 4:3. Standard fare.

The actual gameplay, however, uses a resolution of 320x199 pixels... at 60hz. Naively, you might thing that this is just another cousin of 640x400, and if you treat the resolution that way this is what you get:
https://imgur.com/brFgt4z

Only, that isn't what Jazz Jack Rabbit is supposed to look like. The secret is in the refresh rate. Jazz Jackrabbit is related to the 640x480@60hz resolution, not 640x400@70hz. It is a 16:10 aspect ratio game that is meant to be drawn with square pixels! Using 525 vertical line instead of 449 vertical line and tweaking the vertical front porch to compensate, we get this:
https://imgur.com/kYHA7WB

Much better!

Ok, noe let’s look at something similar but harder. Sierra’s “The Incredible Machine” is a title that uses resolutions that look like 640x400@70hz but are actually variations on 640x480@60hz. In particular, the title screen uses 320x400 pixel internally displayed as 640x400@60hz exactly! So, all we have to do is create a resolution of 640x400 but with 525 line instead of 449 and 60hz refresh rate instead of 70hz and we should be good to go, right?
https://imgur.com/V14jInX

Unfortunately, no. Neither DOSBox nor PCem are capable of distinguishing between 640x400@60hz and 640x400@70hz, nor can they tell the difference between 525 total lines or 449 total line. Whichever resolution you define first will be the one the emulator uses every time, regardless of the emulated refresh rate.

Fortunately, there is a pretty easy work around. In DOSBox, all you have to do is set the “full Resolution” option to “640x480”, and then DOSBox will just center the 640x400 title screen vertically for you. In PCem, you set the resolution from “Original” to “custom” and 640x480, and then set the output scale = “Integer” and it does the same thing. You can set a per game profile up for this weird odd duck and you are not doing too bad.
https://imgur.com/aZ4S0T1

Similar to this, “Line Wars” in MVGA Mode (but not SVGA Mode!) as well as System Shock CD when using the “320x400” display option are also 16:10 aspect ratio games meant to be displayed with square pixels in DOS! Who knew?!

The Weirdest of them All

By far, the strangest two games on that list are Jump n’ Bump and Earth Worm Jim. Both of them use completely oddball resolutions and refresh rates that, as far as I can tell, bear no resemblance whatsoever to any standard VGA or SVGA display mode.

Jump ‘n Bump has a not-quite 16:10 aspect ratio that is meant to fill an 800x600 frame, but at an oddball 54hz refresh rate. As far as I can tell, 800x600@54hz is not a thing. This shareware title is the only piece of software I know of that uses it. Using emulation, I had no idea what it was doing - I had to load this one on my DOS machine to even get a clue

Weirder still is Earthworm Jim, which uses a variation of 320x224 internal resolution scan doubled to 640x448, but at nonstandard 72hz refresh rate. What’s more, the screen positioning in DOS is also strange, with some margin on both the top and bottom and a not quite 4:3 intended aspect ratio (again, square pixels). Even more bizarre, Earth Worm Jim 1 runs at 72hz, but Earth Worm Jim 2 runs at 60hz internally! Both use the exact same display timing! What for? It makes no sense!
https://imgur.com/mwK6oKE

The Limits of Emulation

While I was able to get DOSBox and PCem to work more than well enough to do some DOS gaming, there are definitely some theoretical scenarios that emulation cannot cover. For one, neither emulator takes into account the total number of lines or refresh rate in a display mode when selecting the appropriate resolution. This can lead to problems, like with “The Incredible Machine”. If a game or a piece of software were to mix 70hz and 60hz display modes in the right way it wouldn’t be possible to emulate it entirely correctly. Also, for some games that transition between display modes quickly, like “Pinball Illusions” does with its intro sequence, some of the graphics can be lost in the delay between transitioning to each resolution - while windows and the emulator struggle to keep up.

I didn’t even bother trying to run any demo software, which, aside from adding a whole heap of new resolutions to my spread sheet, could probably introduce a lot of combinations that would be impossible using this kind of emulation.

I don’t think the problem is severe enough, nor the interest in running DOSBox and PCem in this way widespread enough, to warrant any kind of special attention from the developers. Still, it is worth noting that to completely accurately emulate DOS and all its display capabilities would probably require a dynamic modline setup similar to how “Groovy MAME” does it!

How can this be improved?

I don’t think for second that I have found all the unusual resolutions in commercial DOS software. If anyone knows of some more outlies, please let me know! The spread sheet can stand to grow some more.
I also am aware that many of the display timings I came up with are little more than educated guesswork. I think a better way to do it would be to measure the VGA timings directly from reference VGA cards instead. I think it can be done pretty easily with an Arduino and few wires and resistors, and even though I know basically nothing about circuits (I’m a software guy by trade!) it is a project I am interested in trying someday.

In general, if I got anything wrong in my explanation or in my setup I would be interested to know. If you tried to reproduce what I did and ran into any interesting issues and roadblocks those would be good to document too! What do you know that I don’t? What do you think? Let’s have a discussion 😊.

Reply 1 of 60, by dkjr

User metadata
Rank Newbie
Rank
Newbie

Very interesting. I don't have a graphics card with VGA or DVI-A(nalogue) in my modern PC and if I find some space for my CRT, I would connect it to my retro rig 😀
I have been tinkering with a VGA-HDMI adapter 61ft1dP1VQL._AC_SY450_.jpg but a lot of lower resolutions and odd refresh rates are not supported.

Reply 2 of 60, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie
dkjr wrote on 2021-02-01, 08:31:
Very interesting. I don't have a graphics card with VGA or DVI-A(nalogue) in my modern PC and if I find some space for my CRT, I […]
Show full quote

Very interesting. I don't have a graphics card with VGA or DVI-A(nalogue) in my modern PC and if I find some space for my CRT, I would connect it to my retro rig 😀
I have been tinkering with a VGA-HDMI adapter 61ft1dP1VQL._AC_SY450_.jpg but a lot of lower resolutions and odd refresh rates are not supported.

I am curious to know how well these adapters work. From what I have read, there is nothing technically stopping someone from using HDMI with a VGA DAC from doing the same thing.

Reply 4 of 60, by duga3

User metadata
Rank Member
Rank
Member

I am using Sunix DPU3000 with it's own DAC to connect to modern GPU DisplayPort output:

http://www.sunix.com/product/DPU3000.html

It's DAC can go up to 550MHz. Most GPUs have max 400MHz built-in DAC. So I can run resolutions like 2880x2160@60Hz on a CRT. There is no additional lag.

All you need to run desired custom resolutions is the CRU app that @mothergoose729 already shown above.

This Sunix adapter may be hard to find these days so maybe try other manufacturer who uses the same "Synaptics VMM2322" chip in theirs. Or a newer iteration of that chip if it was made by the time you are reading this.

98/XP multi-boot system with P55 chipset (build log)
Screenshots
10Hz FM

Reply 5 of 60, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie
duga3 wrote on 2021-02-02, 18:17:
I am using Sunix DPU3000 with it's own DAC to connect to modern GPU DisplayPort output: […]
Show full quote

I am using Sunix DPU3000 with it's own DAC to connect to modern GPU DisplayPort output:

http://www.sunix.com/product/DPU3000.html

It's DAC can go up to 550MHz. Most GPUs have max 400MHz built-in DAC. So I can run resolutions like 2880x2160@60Hz on a CRT. There is no additional lag.

All you need to run desired custom resolutions is the CRU app that @mothergoose729 already shown above.

This Sunix adapter may be hard to find these days so maybe try other manufacturer who uses the same "Synaptics VMM2322" chip in theirs. Or a newer iteration of that chip if it was made by the time you are reading this.

There is really interesting about the DAC supporting a higher pixel clock, although I think most CRTs (including my own) crap out at around 250mhz anyway.

Reply 6 of 60, by duga3

User metadata
Rank Member
Rank
Member

Yeah it is, I don't think their production page even mentions this cool feature.

About the limits, in my experience, once the analog signal is generated, the bottleneck inside CRT was always the "horizontal refresh rate" and not "pixel clock".

"Horizontal refresh rate" formula is roughly "vertical number of pixels" times "vertical refresh rate" times "from 1.05 up to around 1.15".

So 2160p at 60Hz is ~134000Hz (usually called 134kHz) horizontal refresh rate so you really need the last gen of CRTs for that as you have guessed (and that external DAC adapter of course). Sometimes you can find this spec for your monitor online.

But it's not like you need all that for DOS. I just wanted to share a nice product that probably does what you need here and has a lot of headroom for other possible projects/uses.

98/XP multi-boot system with P55 chipset (build log)
Screenshots
10Hz FM

Reply 7 of 60, by WDStudios

User metadata
Rank Member
Rank
Member

For the record... DOS games often displayed at incorrect aspect ratios even in genuine DOS. For example, the DOS version of C&C: Red Alert runs at 320 x 200, and I'm about 99% sure that it was supposed to show in a 1.6:1 area of the screen with black bars at the top and bottom, but when I played it in real DOS in the '90s, the image would be stretched to fill the entire 4:3 screen and the squares became tall rectangles. I don't know how it looked on other machines. Maybe I'm wrong and every other computer in the world acted the same way, and that's the way it was supposed to look, or maybe most of them did it with black bars and square pixels.

So, the very concept that you're going for here might be... nonexistent.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 8 of 60, by MrFlibble

User metadata
Rank Oldbie
Rank
Oldbie
WDStudios wrote on 2021-06-22, 06:41:

For example, the DOS version of C&C: Red Alert runs at 320 x 200, and I'm about 99% sure that it was supposed to show in a 1.6:1 area of the screen with black bars at the top and bottom, but when I played it in real DOS in the '90s, the image would be stretched to fill the entire 4:3 screen and the squares became tall rectangles.

I think this case is a bit ambiguous. From the technical standpoint, I believe there is no way VGA 13h would display as 640x400 in letterboxed mode on a 4:3 screen. What the developers at Westwood intended is another matter. In the original Command & Conquer (which was DOS VGA 320x200 only), it is quote plausible to assume that they took account of non-square pixels, as the GDI sidebar logo is squashed vertically but will appear round when stretched to 640x480:
75895-command-conquer-dos-screenshot-some-missions-already-start.gif
2717-command-conquer-dos-screenshot-mission-end-screen.jpg
However the units and buildings in-game actually look OK both ways, because of the overhead perspective: you could conceive of these as two different angles at which you view the playing field.

It appears that Red Alert was already developed mostly with the high-res Windows 95 mode in mind, which supports both the 640x400 mode that gets stretched to 4:3 ratio, and the 640x480 mode which is essentially a letterboxed 640x400 with square pixels. Faction logos on the sidebar seem to be intended for square pixels both in the DOS and Windows modes, but on the conquest map you can still see squashed circles:
518618-command-conquer-red-alert-dos-screenshot-map-of-europe.png

DOS Games Archive | Free open source games | RGB Classic Games

Reply 9 of 60, by WDStudios

User metadata
Rank Member
Rank
Member

Exactly. It's a super-complicated situation where real-world results and developer intent aren't always going to line up, and even the devs themselves might not have all been on the same page, so seeing how a game runs in real DOS on one specific machine won't necessarily be an accurate guide to how it's "supposed" to look.

I still want to believe that the map tiles in those games are supposed to be square. Who makes a map with rectangular tiles?

EDIT: I just installed Red Alert on my XP partition. The Terrain Editor runs in letterboxed 1.6:1 on my 1600 x 1200 LCD, so the map tiles are all square, but I definitely don't recall it working that way back in the Win95 days. I dunno what that's worth.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 10 of 60, by MrFlibble

User metadata
Rank Oldbie
Rank
Oldbie

I've been through a period when I applied aspect ratio correction to all DOS games (SVN Daum does that even in cases when it's not needed, like Rayman). Now I'm way more cautious and try to figure it out on a case-by case basis. Realistically, back in the day most of the time VGA 13h would be stretched to a 4:3 CRT display, but then again there would be laptop LCDs that would keep an image at 640x400 no matter what.

I'd like to think that now we're pretty much in control of whether we want square pixels or not. It seems to matter very little in many cases though, save for games like Doom or Build engine stuff where we know it's non-square pixels all the way.

Here's a curious example I've run into recently, a demo of StarFighter 3000. You can switch between 320x200 and 640x480 literally on the fly, and here's a comparison:

star03_028-640.png
Filename
star03_028-640.png
File size
44.74 KiB
Views
5006 views
File license
Fair use/fair dealing exception
star03_029.png
Filename
star03_029.png
File size
46.66 KiB
Views
5006 views
File license
Fair use/fair dealing exception

You can see that while all sprites, including the sun disk in the sky, get over-stretched vertically in the aspect-corrected low-res image, the shapes of the 3D ships actually match the high-res version, while without correction they'd look vertically squashed.

Other games that also support both 320x200 and 640x480 may simply have square pixels in both modes, easily identified by comparing shots. This includes Magic Carpet and quite a few other titles.

DOS Games Archive | Free open source games | RGB Classic Games

Reply 11 of 60, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++
WDStudios wrote on 2021-06-22, 06:41:

For the record... DOS games often displayed at incorrect aspect ratios even in genuine DOS. For example, the DOS version of C&C: Red Alert runs at 320 x 200, and I'm about 99% sure that it was supposed to show in a 1.6:1 area of the screen with black bars at the top and bottom, but when I played it in real DOS in the '90s, the image would be stretched to fill the entire 4:3 screen and the squares became tall rectangles. I don't know how it looked on other machines. Maybe I'm wrong and every other computer in the world acted the same way, and that's the way it was supposed to look, or maybe most of them did it with black bars and square pixels.

So, the very concept that you're going for here might be... nonexistent.

I think you would get black bars on an all analog monitor, trouble is by mid-late 90s monitors were getting "smart" and had digital correction and sync locking and would try to get the "picture" to fill the screen. Figure if your CRT has an OSD for controls it's "smart", if it has knobs it's dumb.

Then there's things like when the other day, I was playing a character mode game, and wondering why I liked it better on DOSbox than on a vintage system, and it occurred to me, that the 16:9 screen makes the characters more square, the pixels might have been stretched out of square sideways, but the character unit was squared up. ppl just put up with angles more like 30/60 for movement diagonally rather than 45.

Edit: Also find that 320x200 games like Frontier Elite and Frontier First Encounters look better on a 16:10 than a 4:3 monitor.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 12 of 60, by WDStudios

User metadata
Rank Member
Rank
Member
MrFlibble wrote on 2021-06-22, 13:46:

Here's a curious example I've run into recently, a demo of StarFighter 3000. You can switch between 320x200 and 640x480 literally on the fly, and here's a comparison:
star03_028-640.png star03_029.png
You can see that while all sprites, including the sun disk in the sky, get over-stretched vertically in the aspect-corrected low-res image, the shapes of the 3D ships actually match the high-res version, while without correction they'd look vertically squashed.

Wow, that's pretty wacky.

And congrats on your "on the fly" pun. It was so subtle that I didn't even notice it until the second time I read it 😀

Anyway, I don't have a machine capable of running real DOS on real hardware at the moment, so nothing that I'm about to say is necessarily applicable to the DOS version of C&C: Red Alert. However, I just took a bunch of screenshots from the Win95 port, and it is a godawful mess.

First of all, the good news: the introductory cinematic of Einstein killing Hitler, as well as all of the mission briefings, display in letterboxed 1.6:1 on my 1600 x 1200 LCD, just like the terrain editor. I'm not noticing any distortion, so I'm assuming this is the correct and intended aspect ratio.

I also learned that when I press "print screen" in the game, it copies the contents of the screen to my clipboard AND generates a PNG file in the Red Alert directory containing the screenshot. BUT... the PNG file in question is 640x400, while the image that is copied to the clipboard is 640x480. So, this spares me the trouble of opening these files in Paint.net or GIMP and resizing them myself. But it's a strong indication that something is horribly wrong with how the developers handled the game's resolution and aspect ratio.

Now here's the bad news: something is horribly wrong with how the developers handled the game's resolution and aspect ratio.

First, the other introductory cinematic - the one that doesn't feature Einstein or Hitler, and which you see every time the game starts rather than just the first time you play - is obviously meant to be 1.6:1...

kC999MX.jpg

...but got stretched to fit my 4:3 monitor:

ZkIvHT8.jpg

Second, if you haven't actually built anything yet, then the sidebar on the actual gameplay screen displays some concentric curves that WOULD be circles if viewed in 1.6:1...

EzS8eYc.jpg

...but the gameplay screen gets distorted to fill a 4:3 monitor as well, turning them into concentric ovals. There are also some "jaggies" at the bottom edges of the Allied logo and the up/down arrows at the bottoms of the construction queues, indicating that the image is being resized with a nearest-neighbor algorithm:

KD5HGd0.jpg

Third, there's the score screen. This one isn't immediately obvious, but the grid in the background appears to be made of squares, and there's one object here that looks perfectly circular at 1.6:1...

edLYdmu.jpg

...and yet the score screen, like the previous two examples, gets distorted to fit my 4:3 monitor, turning the squares into rectangles and the circle into an oval:

Ownb9i4.jpg

Finally, there's the mission-select screen. At first glance, this appears to be the only part of the game that actually looks correct when stretched to fill a 4:3 display. The grid appears to be made of squares and the concentric curves appear to be circles...

PvA3aFI.jpg

...but there's a catch! The mouse cursor, for some reason, is oval, and the horizontal lines of the grid are different thicknesses (sometimes two pixels thick, sometimes one). When we look at the 1.6:1 version of the image...

a3G4A00.jpg

...everything else is wrong, but the mouse cursor has magically become a perfect circle, and the horizontal grid lines are all magically one pixel thick.

This is more or less consistent with how I remember the DOS version of the game behaving 25 years ago, though I can't guarantee the reliability of my 25-year-old memories. I do very distinctly remember the map tiles being tall rectangles, though.

So regardless of what happened with the original C&C and its apparently intended nonsquare pixels, Westwood very clearly had no idea what they were doing when they made Red Alert.

Last edited by WDStudios on 2021-06-22, 15:24. Edited 1 time in total.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 13 of 60, by WDStudios

User metadata
Rank Member
Rank
Member

Okay, I was dead wrong about the mission briefings. As it turns out, just because I didn't notice any distortion, doesn't mean there wasn't any... and just because it was letterboxed, doesn't mean it was a 640 x 400 image letterboxed to 640 x 480... and what I thought was an artifact of rescaling a 640 x 480 image to 1600 x 1200, was actually an artifact of rescaling a 640 x 400 image to 640 x 480...

V21rDU7.jpg

Yeah. That's a roughly 2.05:1 cinematic letterboxed to 1.6:1, which then got squooshed to 4:3...

KIhOojD.jpg

BitWrangler wrote on 2021-06-22, 14:03:

I think you would get black bars on an all analog monitor, trouble is by mid-late 90s monitors were getting "smart" and had digital correction and sync locking and would try to get the "picture" to fill the screen. Figure if your CRT has an OSD for controls it's "smart", if it has knobs it's dumb.

My mom's monitor at the time had the knobs but it did the stretching to fill the screen.

Also, the fact that "print screen" is copying a 640 x 480 image to the clipboard, rather than a 1600 x 1200 one, indicates that whatever's going on is happening in Red Alert itself, before it hits the monitor. Or more specifically, the image is being resized twice: the first time from 640x400 to 640x480, and then again from 640x480 to 1600x1200. And the monitor definitely isn't responsible for that first resize.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 14 of 60, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

I guess the active window/OS has first claim on the print screen key so it's what Red Alert is immediately on top of that's handling it.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 15 of 60, by WDStudios

User metadata
Rank Member
Rank
Member

Oh, there's one more thing I neglected to mention: I could be wrong about this, because again, we're talking about 25-year-old memories here, but I think the DOS version of Red Alert was the one DOS game that I ever tried to run, and succeeded in running, from within Win95. I cannot specifically recall rebooting into DOS mode just to run Red Alert. Is it possible that the rescaling from 640x400 to 640x480 was/is being done by neither Red Alert itself nor the monitor, but by Windows? That would explain why Red Alert's internal screenshot-generating function yields a 640 x 400 PNG while the Windows clipboard gets a 640 x 480 image. If that's the case, then the DOS version of Red Alert should in fact play at the correct aspect ratio if launched from DOS rather than Windows.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 16 of 60, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie

C&C red alert can run natively in windows. When you do all of the pixels are square, with black bars on the top and bottom to center it.

The purpose of this project was not to divine developer intent, it was to make dosbox looks the same on a CRT monitor as real DOS.

Reply 18 of 60, by WDStudios

User metadata
Rank Member
Rank
Member

Ah, I think I've cracked the Red Alert case, at least for Win95. There's a program in the Red Alert directory named "RASETUP.EXE". This is a Windows executable that allows the user to select between 640x400 and 640x480 modes. This is misleading, because both options produce 640 x 480 output. The difference is that if this program is not run, or if 640x400 is chosen, then the 640x400 image will be resampled to 640x480 before being sent to the monitor, with the horrifying results that I posted above; however, if 640x480 mode is chosen, then the 640x400 image will be letterboxed to 640x480 at all screens, including the mission select screen:

8JsvNdQ.png

So, where does this leave us in terms of DOS? I have no idea. I tried creating a Win98 virtual machine in VMware and then rebooting the VM into DOS mode, but every time I tried to launch anything Red Alert-related from DOS, I got error messages complaining about a lack of a mouse.

mothergoose729 wrote on 2021-06-22, 16:34:

The purpose of this project was not to divine developer intent, it was to make dosbox looks the same on a CRT monitor as real DOS.

But that was probably based on the assumption that the way things looked in real DOS was an accurate reflection of developer intent, or at least consistent from one computer to another. I now realize that my 25-year-old memories of Red Alert were probably a poor example of this and my argument is a lot weaker than I thought it was, but it's still something to be on the lookout for.

Since people like posting system specs:

LGA 2011
Core i7 Sandy Bridge @ 3.6 ghz
4 GB of RAM in quad-channel
Geforce GTX 780
1600 x 1200 monitor
Dual-booting WinXP Integral Edition and Win7 Pro 64-bit
-----
XP compatibility is the hill that I will die on.

Reply 19 of 60, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie
WDStudios wrote on 2021-06-22, 17:57:

But that was probably based on the assumption that the way things looked in real DOS was an accurate reflection of developer intent, or at least consistent from one computer to another. I now realize that my 25-year-old memories of Red Alert were probably a poor example of this and my argument is a lot weaker than I thought it was, but it's still something to be on the lookout for.

I never made that assumption at all. DOS is not unique in that it often uses non uniform aspect ratios, and there is a lot of debate as to which version - digital pixel correct or medium correct - is true to the art. It is adjacent to the topic, and worth discussing, but not what my post was about.