How to display games as they were intended with a CRT?

Ask for help with ScummVM problems

Moderator: ScummVM Team

Post Reply
khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

How to display games as they were intended with a CRT?

Post by khaz » Thu Jan 18, 2018 9:18 pm

I have a modern gaming PC, and a CRT. I can change to whatever resolution is needed. How do I configure SCUMmVM so that it displays fullscreen at 400p natively? (with the correct aspect ratio.)

I messed with the options a bit but it seems that SCUMMVM doesn't change the display resolution, it sticks to the desktop resolution and only changes its internal resolution.

I switched the desktop to 720x400@70Hz, but then games were displayed with black bars on the side. Checking "aspect ratio correction" only made the game even thinner.

User avatar
GUN
Posts: 45
Joined: Tue Nov 08, 2005 8:48 am
Location: Germany
Contact:

Post by GUN » Fri Jan 19, 2018 11:31 am

Native resolutions in DOS was

320x200 320x240
in HiMode 640x400 640x480

so the resolutions of the game are same.

if you use a widescreen resolution (720x400) you get these left and right borders. so i don`t get the point.

choose a more fitting resolution or scale it to fit more your monitor resolution.

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Fri Jan 19, 2018 12:58 pm

VGA doubled the lines in 200 and 240 row resolutions. To replicate this, you would set the resolution to 640x400 and use the 2x scaler on lowres games and disable aspect ratio correction.
70 Hz is VGA standard for 400 (and 200 logical) lines, but many graphic cards could be set to higher frequencies reducing flicker. So if your CRT supports it, you might just do that.
For hires games, use a 640x480 resolution and the 1x scaler.


720 width is commonly used on DVD and DVB, but not on VGA. Also, they are pre-defined in modern graphic drivers, since they are mandatory for HDMI.

khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

Post by khaz » Fri Jan 19, 2018 1:33 pm

This was taken by booting with a DOS floppy disk and running the game natively.

Image

This is SCUMMVM 2.0.0 on Windows, with the resolution artificially set at 720x400 (SCUMMVM only changes its internal rendering resolution, not the display resolution; it keeps the Windows desktop resolution)

Image Image

The video card cannot have its resolution set at lower than 720x400 or 640x480, but displays the correct image under primitive DOS conditions.

Earlier SCUMMVM builds (I tried 1.8.1) change the display resolution. On my computer, this resulted in the exact same incorrect thin image, in 720x400, as shown above.

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Fri Jan 19, 2018 7:15 pm

It really is 320 pixels. Don't trust the 720, the monitor simply doesn't know any better. This mismatch may cause aliasing, but probably isn't noticeable due to the really low resolution, hence can be ignored.

You may try to define a 960x600 resolution and use the 3x scaler. It is not exactly DOS timing, but is probably the closest thing you'll get if your GPU does not let you define anything lower than 720x400.

khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

Post by khaz » Fri Jan 19, 2018 7:32 pm

LogicDeLuxe wrote:It really is 320 pixels. Don't trust the 720, the monitor simply doesn't know any better. This mismatch may cause aliasing, but probably isn't noticeable due to the really low resolution, hence can be ignored.
I don't know what my graphics card and/or monitor do exactly, but I can't see any sign of stretching. No doubled pixels, no in-between with merged colours, etc.

Here's a close up of another game in DOS 6.22 with a single-pixel grid pattern. You can click on the image for a bigger version.

Image

User avatar
criezy
ScummVM Developer
Posts: 550
Joined: Sat Sep 23, 2006 10:41 am
Location: West Sussex, UK

Re: How to display games as they were intended with a CRT?

Post by criezy » Fri Jan 19, 2018 8:16 pm

khaz wrote:it seems that SCUMMVM doesn't change the display resolution, it sticks to the desktop resolution and only changes its internal resolution.
That is correct when ScummVM uses SDL2 (as opposed to SDL 1.2) which is the case in the last release for most platforms (including Windows, macOS, Linux) I believe, and when not using the OpenGL mode. In such a case SDL2 indeed keeps the desktop resolution in fullscreen mode and scales internally the data it gets from ScummVM.

You can however use the OpenGL mode if you want to be able to select a lower fullscreen resolution and then use Ctrl-Alt and + or - to cycle through the available resolutions and finds the one that suits you best.

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Fri Jan 19, 2018 8:33 pm

khaz wrote:I don't know what my graphics card and/or monitor do exactly, but I can't see any sign of stretching. No doubled pixels, no in-between with merged colours, etc.
That means that no resampling takes place, which is certainly a good thing. Then the 720 is just a wild guess by the monitor and can be ignored.
In your 720x400 mode, did you try reducing the horizontal blanking? That might be enough to scale the 640 active pixels to your screen width.

khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

Re: How to display games as they were intended with a CRT?

Post by khaz » Fri Jan 19, 2018 8:56 pm

criezy wrote:You can however use the OpenGL mode if you want to be able to select a lower fullscreen resolution and then use Ctrl-Alt and + or - to cycle through the available resolutions and finds the one that suits you best.
I just tried it. While the main menu now fills the screen properly, the games are still in the same incorrect aspect ratio.

It's like the background and other geometrical elements are stretched to fill the screen, but bitmap objects (buttons, text, and the game itself) are still incorrectly sized. I don't expect SCUMMVM to provide a perfectly scaled interface for every combination of resolution and aspect ratio, I'm only worried about the game itself.
Last edited by khaz on Fri Jan 19, 2018 9:10 pm, edited 2 times in total.

khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

Post by khaz » Fri Jan 19, 2018 9:02 pm

LogicDeLuxe wrote:In your 720x400 mode, did you try reducing the horizontal blanking? That might be enough to scale the 640 active pixels to your screen width.
You mean using the monitor's resize feature? Sure, I could adjust the width of the displayed image, but then it would mess with every other software that use 720x400 correctly. I don't want to readjust the picture every time I switch, that would be a mess.

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Fri Jan 19, 2018 10:31 pm

khaz wrote:Sure, I could adjust the width of the displayed image, but then it would mess with every other software that use 720x400 correctly.
You could use a different timing like 85 Hz. Then, the monitor should distinguish that from regular DOS resolutions and remember the adjustments separately.

khaz
Posts: 6
Joined: Mon Oct 27, 2014 3:38 pm

Post by khaz » Sun Jan 21, 2018 8:57 pm

That sounds super complicated.

Is there a way to tweak OpenGL so that it stretches correctly?

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Tue Jan 23, 2018 10:36 am

khaz wrote:Is there a way to tweak OpenGL so that it stretches correctly?
Using a 4:3 resolution like 800x600 should do. Most modern software assume square pixels.

Post Reply