VOGONS


First post, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

95% of DOS games run exclusively or optionally in a 320x200 resolution graphics mode, whether CGA, PCjr./Tandy, EGA, MCGA, VGA. 320x200 gives a screen aspect ratio of 16:10. CRT computer monitors, however, have a 4:3 aspect ratio. Viewing the graphics with square pixels would mean large borders on the top and bottom of the screen. Most computer monitor users would deem the large borders unacceptable, so they would use their vertical control to stretch the screen.

The screen would give an "even" stretch, every scanline would be thickened equally, more or less. In this way, the 320x200 screen would take up the same space as a 320x240 screen. 240/200 = 1.2; this means that each scanline would be 1.2 times thicker stretched than un-stretched.

How can this stretch be simulated best on an LCD monitor. LCDs are made up of discrete pixels, they cannot vary the pixel height or width as a CRT can. LCDs of course can resize screens. In the older LCDs, certain lines or portions thereof are repeated, but not all. This gives a sharp but ugly picture, as fine detail like text looks uneven. More recently, interpolation is used to try to eliminate the uneven stretch, but the result looks far fuzzier than a properly stretched image on a CRT.

If the resolution of the original image is an interger fraction of the resized image, an interger stretch will give the best results. For 320x200, the integer resizing goes like this:

640x400 (x2)
960x600 (x3)
1280x800 (x4)
1600x1000 (x5)
1920x1200 (x6)
2240x1400 (x7)
2560x1600 (x8)

But this resizing, which is quite doable on certain LCDs, still gives a 16:10 screen ratio. The image would not look quite as it would have on a CRT. The solution is to stretch using different interger scaling for the horizontal and vertical.

Let us start with 640x400 to 640x600. 600/400 = 1.5. Not even close.

Next is 960x600 to 960x800. 800/600 = 1.33. A little closer, but too rectangular.

Consider 1280x800 to 1280x1000 (using a 1280x1024 screen.) Here 800 lines become 1000 lines. 1000/800 = 1.25. Close but not quite.

One level up is 1600x1000 to 1600x1200 (using a 1600x1200 screen.) Here 1000 lines become 1200 lines. 1200/1000 = 1.2. Exact!

Finally, 2240x1400 to 2240x1600 (using a 2560x1600 screen.) 1400/1200 = 1.14. Too short.

So, the best solution is to use a 1600x1200 LCD monitor or a 1920x1200 LCD monitor (with pillarboxing). The Direct3D graphics filter will work for 320x200 games. (It isn't perfect, games that use tweaked text modes, like their text mode counterparts, will looked too stretched vertically).

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 1 of 4, by GL1zdA

User metadata
Rank Oldbie
Rank
Oldbie

I don't get how do you stretch the image: why do you stretch 640x400 to 600x600 instead of 640x480. 1280x800 to 1280x1000 instead of 1280x960 and so on?

OK. The Horizontal resolution must be divisible by 6 to, and vertical by 5, because LCD can't display lines between rows of pixels (what CRT can do). (every 320:200 pixel has to be composed of a square 5 pixel high and 6 pixel wide - or it's multiplication like 10x12 and so on)

640/6 = 106 2/3 - bad
800/6 = 133 1/3 - bad
1024/6 = 170 2/3 - bad
1280/6 = 213 1/3 - bad
1600/6 = 266 2/3 - still bad...

actually I'm not aware of any horizontal 4:3 resolution divisible by 3 (and if it's not divisible by 3 it is not divisible by 6 either), so LCDs will always fail to display 320x200...

"320x200 gives a screen aspect ratio of 16:10"
There's is no such thing as "screen aspect ratio". That's the "Storage Aspect Ratio". The "Display Aspect Ratio" for 320x200 is 4:3. The "Pixel Aspect Ratio" is "5/6". PAR*SAR=DAR.

getquake.gif | InfoWorld/PC Magazine Indices

Reply 3 of 4, by GL1zdA

User metadata
Rank Oldbie
Rank
Oldbie
Davros wrote:
Great Hierophant wrote:

320x200 gives a screen aspect ratio of 16:10. .

which is the same as a 1680x1050 lcd

As I said above - 320x200 is supposed to be displayed as 4:3. The SAR doesn't matter. (Just as 640x200 is also supposed to be displayed as 4:3 with 5:12 pixels).

getquake.gif | InfoWorld/PC Magazine Indices

Reply 4 of 4, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++

Well in D-Fend Reloaded I use:

- Fullscreen
- 0x0 resolution setting
- Keep correct aspect ratio
- Nearest neighbor scaling with factor 3x

This setting "just works" and looks fantastic.

On my "Time machine Retro PC" I use a 4:3 15" LCD (1024 x 768 resolution). Also looks very good and one of the few monitor sizes with 4:3 ratio (17" and 19" are 5:4). 20" 4:3 would be nice but starts to get pricey.