VOGONS


First post, by FulValBot

User metadata
Rank Member
Rank
Member

There is a problem with 320x200 resolution... dgvoodoo2 detect it as a 640x400 (for example with hexen II if i try to use these resolution when i try to use integer scaling these can scale only 2x; and this is wrong with 320x200 resolution... 640x400 can scale to 1280x800 and that's normal with my 1080p display, but 320x200 why can scale only to 1280x800? And this is happening with 2x mode... So dgVoodoo2 is detecting 320x200 as a 640x400 resolution, and it's wrong)

Reply 1 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

Forcing resolution to 320x200 seems to work around that, but eh... you really shouldn't be doing what you're suggesting in the first place. That 320x200 doesn't output 320x200 is of course a valid concern, but Hexen II corrects aspect ratio for 320x200, so it is a 4:3 resolution like it should be. The only valid integer scaling factors to maintain the correct aspect ratio is 1600x1200 (x:5, y:6) or 3200x2400 (if you have a 5K screen).

Unless of course you were intending to use dgVoodoo's option to force 4:3. But then the difference in scaling quality between a starting resolution of 320x200 (1600x1000) or 640x400 (1920x1200) should be rather minimal.

Reply 2 of 24, by FulValBot

User metadata
Rank Member
Rank
Member

I have only a 1080p screen, so no 1600x1200 here...

I have tried a custom 1600x1000 and a custom 1280x1000 but are both affected by a bad bilinear filter... (and 1600x1000 has a wrong aspect ratio)

When i select Max available Integer scale factor it scale only to 1280x800, this for both 320x200 and 640x400 (the same happen when i select 2x mode; i can't use 3x or 4x mode with 320x200 because with 3x i got a 1920x1200 and with 4x i got a 2560x1600, i don't know why...)

Reply 3 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

Set dgVoodoo to force resolution to 320x200 first, then in the integer scale factor box type "x:4,y:5" (1280/1000 = 1.28 , not far away from 4/3 which is 1.33). That's the best integer scale you can do on a 1080p monitor:

integer.png
Filename
integer.png
File size
61.46 KiB
Views
771 views
File license
Fair use/fair dealing exception

Not sure why you would want to stick to integer scaling, I see no noticeable sharpness difference stretching it to fullscreen to get rid of black bars (this is with resampling set to Lanczos-3):

fullscreen.png
Filename
fullscreen.png
File size
1.04 MiB
Views
771 views
File license
Fair use/fair dealing exception

Also disable the deframer, I obviously didn't in the screenshot.

Edit: for reference, the "simple" way (set Scaling mode to "Stretched, 4:3 Aspect ratio" and set Integer scale factor to 3):

3x.png
Filename
3x.png
File size
264.23 KiB
Views
762 views
File license
Fair use/fair dealing exception

Reply 4 of 24, by FulValBot

User metadata
Rank Member
Rank
Member

Yes i can confirm that it works fine when i manually force that resolution and when i use x:4, y:5 as integer; i don't know why this is required... (but i think because 320x200 it's a 16:10 resolution, not a 4:3; if i try to select Max scale it scale to 1600x1000, so i have to manually use x:4, y:5)

Without integer scaling it can got some distorsions (or at least with some games, i don't know about Hexen II, i need more testing...)

A serious problem with all Pain Engine games (this at least with 640x480 resolution, that i can't recommend...) when i try to select a scaler (it works fine only with "Unspecified" but with that i got a very small screen; if i change it i got a very large incomplete screen and i can't use it... this happen also when i select a integer valor (also when "Unspecified" scaler is selected)

Last edited by FulValBot on 2021-02-28, 23:10. Edited 4 times in total.

Reply 6 of 24, by Dege

User metadata
Rank l33t
Rank
l33t

Isn't 320x200 is implemented with physical 640x400 with in-game renderer pixel duplication and that's why no difference between 320x200 and 640x400 with this game?

I tried 320x200 with 1920x1080 desktop resolution and it worked as expected.

109	2172.931380	17424	BOOST.EXE	[dgVoodoo] INFO: DirectDraw (006E0148)::SetDisplayMode: Display mode 320x200, 16 bit, 60 Hz is set but refresh rate is forced to 59Hz.
110 2172.931469 17424 BOOST.EXE [dgVoodoo] INFO: DirectDraw (006E0148)::SetDisplayMode: Integer factors applied for pixel multiplying are 5x5

You can test it with this ddraw demo and the dbg version of the ddraw.dll
http://www.pouet.net/prod.php?which=3709

Reply 7 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

I didn't consider that, but that really just makes me curious why they would do that. I mean it's probably compatibility reasons, but were there cards that supported 640x400, but not 320x200? Admittedly I'm not into retro hardware, but I haven't heard of any video cards like that which would make a significant amount of DOS games unplayable.

Reply 10 of 24, by FulValBot

User metadata
Rank Member
Rank
Member

I don't know if is needed because if i try to force 320x200 resolution (in both dgvoodoo2 and in-game) and set x:4, y:5 in integer scale option i got a scale of 1280x1000 that works fine (with Max scale i got 1600x1000 but that it's wrong because has a wrong aspect ratio for that game...)

(how can i make a log?)

(Hexen II, NOT Hexen 1)

edit: for the second time i have to enable "Fullscreen size" option in Windowed Mode Attributes option... this strange problem can happen without any reason... sometimes it works fine, other times it launch in a strange windowed mode (i'm not using windowed mode in both Hexen II & dgVoodoo2...)

I don't know if this bug can happen in other games

For now i'm using 2.72 version, caused by google chrome

Reply 11 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie

I checked the log and Hexen II asks for 640x400. More telling, if you set enumerated resolutions to "None" and add "320x200" as a custom resolution Hexen II won't list it. If you remove it and "640x400" however it will. That really doesn't answer the question of why though.

More interesting, if you don't use DirectDraw (-usedirectdraw) but whatever -usewindirect is then Hexen II outputs 320x200 and doesn't mind if it isn't even given 640x400 as a supported resolution, this internal pixel doubling resolution seems to only be a DirectDraw thing.

Reply 14 of 24, by FulValBot

User metadata
Rank Member
Rank
Member

We can't use that on modern displays, it's impossible to do it...

And i can't remember how CRT was really...

Another problem is that CRT has scanlines always "enabled", and these can't be emulated properly...

Last edited by FulValBot on 2021-03-09, 17:17. Edited 1 time in total.

Reply 15 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
Azarien wrote on 2021-03-09, 10:27:

Pure integer scaling is a bit overrated.. the picture on a CRT monitor is never perfectly sharp. Some kind of hybrid scaling (part integer, part blurring) gives most realistic results.

While I agree that pure integer scaling is overrated, simulating a CRT is far from everyone's goal.

FulValBot wrote on 2021-03-09, 12:51:

We can't use that on modern displays, it's impossible to do it...

I think he's trying to explain a two pass integer > interpolated scale pass and that's doable as I sort of explained earlier. Set dgVoodoo's scaling mode to "Stretched, 4:3 Aspect Ratio", the a integer scale factor and change the resampling for whatever resampling you want for the second pass, Lanczos-3 probably being best if you want a "sharp" image.

If you set a integer scale factor close to your resolution the final result should be pretty indistinguishable from pure integer scaling, or you can set it further away for a softer look if that's your preference.

FulValBot wrote on 2021-03-09, 12:51:

Another problem is that CRT has scanelines always "enabled", and these can't be emulated properly...

Computer CRTs don't have that visible scanlines. I'm sure there's a ReShade shader that can emulate scanlines pretty well anyway.

Reply 16 of 24, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie
ZellSF wrote on 2021-03-09, 16:32:
While I agree that pure integer scaling is overrated, simulating a CRT is far from everyone's goal. […]
Show full quote
Azarien wrote on 2021-03-09, 10:27:

Pure integer scaling is a bit overrated.. the picture on a CRT monitor is never perfectly sharp. Some kind of hybrid scaling (part integer, part blurring) gives most realistic results.

While I agree that pure integer scaling is overrated, simulating a CRT is far from everyone's goal.

FulValBot wrote on 2021-03-09, 12:51:

We can't use that on modern displays, it's impossible to do it...

I think he's trying to explain a two pass integer > interpolated scale pass and that's doable as I sort of explained earlier. Set dgVoodoo's scaling mode to "Stretched, 4:3 Aspect Ratio", the a integer scale factor and change the resampling for whatever resampling you want for the second pass, Lanczos-3 probably being best if you want a "sharp" image.

If you set a integer scale factor close to your resolution the final result should be pretty indistinguishable from pure integer scaling, or you can set it further away for a softer look if that's your preference.

FulValBot wrote on 2021-03-09, 12:51:

Another problem is that CRT has scanelines always "enabled", and these can't be emulated properly...

Computer CRTs don't have that visible scanlines. I'm sure there's a ReShade shader that can emulate scanlines pretty well anyway.

My CRT monitor, at least, is very sharp at those resolutions.

CRT monitors do have visible scanlines.

A real VGA card cannot output a VGA signal of 320x200. Internally the resolution is "scan doubled" to 640x400. For modern displays where you are trying to scale much higher that is just incovenient, but it has some hardware justification.

Reply 17 of 24, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
mothergoose729 wrote on 2021-03-09, 16:37:

CRT monitors do have visible scanlines.

I didn't say PC CRTs didn't have visible scanlines at all. I said that didn't have that visible scanlines, as he can't remember how CRTs look like, any scanline footage he's seen is probably from 240p consoles and as you mentioned computer games output 400p at minimum which has significantly thinner scan lines.

mothergoose729 wrote on 2021-03-09, 16:37:

A real VGA card cannot output a VGA signal of 320x200. Internally the resolution is "scan doubled" to 640x400. For modern displays where you are trying to scale much higher that is just incovenient, but it has some hardware justification.

Sure, but doesn't explain why software (Hexen II) would be doing it. As you said, the VGA card will do it anyway.

Reply 18 of 24, by mothergoose729

User metadata
Rank Oldbie
Rank
Oldbie
ZellSF wrote on 2021-03-09, 16:50:
I didn't say PC CRTs didn't have visible scanlines at all. I said that didn't have that visible scanlines, as he can't remember […]
Show full quote
mothergoose729 wrote on 2021-03-09, 16:37:

CRT monitors do have visible scanlines.

I didn't say PC CRTs didn't have visible scanlines at all. I said that didn't have that visible scanlines, as he can't remember how CRTs look like, any scanline footage he's seen is probably from 240p consoles and as you mentioned computer games output 400p at minimum which has significantly thinner scan lines.

mothergoose729 wrote on 2021-03-09, 16:37:

A real VGA card cannot output a VGA signal of 320x200. Internally the resolution is "scan doubled" to 640x400. For modern displays where you are trying to scale much higher that is just incovenient, but it has some hardware justification.

Sure, but doesn't explain why software (Hexen II) would be doing it. As you said, the VGA card will do it anyway.

You're right, the scanlines on CRT monitors are pretty subtle.

My experience with modern graphics is that they no longer support legacy VESA modes like this one. It is pretty rare for a windows game to use that resolution... most of them are using SVGA modes at that point. I am curious if dgvoodoo does this for all VGA games that it is compatible for?

Reply 19 of 24, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie
ZellSF wrote on 2021-03-09, 16:50:

I didn't say PC CRTs didn't have visible scanlines at all. I said that didn't have that visible scanlines, as he can't remember how CRTs look like, any scanline footage he's seen is probably from 240p consoles and as you mentioned computer games output 400p at minimum which has significantly thinner scan lines.

Pretty much every "CRT shader" I've seen gives a much exaggerated scanline effect. I don't know much about pre-VGA hardware, but my first ever monitor had subtle scanlines only in certain resolutions (640x400 comes to my mind, as opposed to 640x480 which looked good) and that's it.

Also, regarding TV scanlines, I think it's purely an NTSC thing. I don't remember any of the CRT TVs I've ever seen (including TVs from the 70s, 80s, 90s, firstly SECAM and later PAL) having any visible scanlines.