Opened 14 months ago

Last modified 6 months ago

#10411 new defect

720x400 fullscreen doesn't have the correct aspect ratio

Reported by: jarreboum Owned by:
Priority: normal Component: --Other--
Keywords: Cc: jarreboum
Game:

Description

I'm using a 4:3 CRT on a PC with a 8800GT, and I'm trying to reproduce the exact same look I would have with DOS. When I boot MS DOS on that computer, I have a perfect, non-stretched, image that fills my monitor.

https://i.imgur.com/sXHTXDkl.jpg

Here's a close up of another game with a checkerboard pattern, showing no signs of upscaling:
https://i.imgur.com/SNMsNIpl.jpg

In Windows, the lowest resolution I can change to is 720x400 (non-square pixels), withDisplay Changer. Whether I use Display Changer or OpenGL mode to set the resolution, I end up with an image that is too thin, or even thinner:

https://i.imgur.com/HEqc2kWl.png

https://i.imgur.com/z4Yj5adl.png

Using OpenGL mode and ctrl+alt+(plus or minus), only the orange background is stretched fullscreen, the buttons, menus and the game itself are still of the incorrect aspect ratio.

Change History (5)

comment:1 Changed 10 months ago by jepael

All analog 400-line mode VGA timings are virtually identical, so the CRT cannot know if it is being sent a 720x400 text mode (which it claims) or a 320x200 double-scanned and double-wide-pixel graphics mode (which the game actually uses).

So it cannot look good by choosing a 720 pixel wide mode. But a 640x400 fullscreen 2x mode might work.

comment:2 Changed 9 months ago by jarreboum

There is no option to chose 640x400. I'm convinced the 720x400 resolution reported under MSDOS is not the actual sent resolution, it is just being reported that way.

I would hope SCUMMVM could be patched to display games at their original resolution in their original aspect ratio.

comment:3 Changed 9 months ago by jarreboum

Cc: jarreboum added

comment:4 Changed 9 months ago by criezy

The original resolution for Maniac Mansion is 320x200. If you want to fill the monitor and have crisp (non-interpolated) pixels, then the best option if possible is to turn off both aspect ratio correction and filtering, select either the Normal or OpenGL graphics mode, and set your screen resolution to a multiple of 320x200, such as 640x400 as suggested by jepael, or 960x600 or 1280x800 and so on. If you use any other graphics mode, you need to take into account the scaling. For example with 2x or HQ2x the screen resolution needs to be set to a multiple of 640x480 (such as 1280x800, but not 960x600) and with 3x or HQ3x it needs to be set to a multiple of 960x600.

If your screen cannot be set to a resolution that is a multiple of 320x200, then there is one other way to fill the screen and stil get crisp pixels: turn on aspect ratio correction, turn off filtering, use OpenGL graphics mode, and set your screen resolution to (1600x1200, or a multiple of it such as 3200x2400). Using the Normal graphics mode here will not give pixels as crisp as it will first scale from 320x200 to 320x240, which is a non-integral scaling and involves pixels interpolation, and then from 320x240 to 1600x1200 (a 5x5 scaling). With OpenGL the scaling is done in a single pass from 320x200 to 1600x1200, which is a 5x6 integral scaling and should give crisp pixels.

If that is still not possible, you can turn on aspect ratio correction with either Normal or OpenGL graphics mode, and set your screen to a resolution that is a multiple of 320x200 (such as 640x480, 960x720 and so on). This will still fill the screen, but pixels will be interpolated and might not be as crisp as you might want.

Finally, if your screen cannot be set to a resolution that is a multiple of 320x200 or 320x240 under Windows, there is currently no way to fill the screen with the display. There is some work (in Pull Request #1189) that will allow to do it in the future, at the cost of pixel interpolation, and thus possibly some blurring.

comment:5 Changed 6 months ago by digitall

Component: --Unset----Other--
Note: See TracTickets for help on using tickets.