exoscoriae / eXoWin3x

Tracking bugs and issues within the eXoWin3X preservation project
24 stars 0 forks source link

Output settings fun #59

Open Python-Exoproject opened 3 years ago

Python-Exoproject commented 3 years ago

I have decided to amalgamate a few separate issues I had made as they are all related to each other.

First I'll link to the initial investigation I made into what setting we should be using for the windowresolution value: #37

With that info I initially suggested we set all games with a windows res of 640x480 to windowresolution=1280x960 and all games with windows res of 800x600 or 1024x768 to windowresolution=original. I later discovered however that the problem is deeper due to dosbox treating any game using more than 256 colours differently. Essentially dosbox wont scale any of these when output=overlay. Simple answer, switch to output=openglnb right? I wish. Depending on if its ECE\Daum\X dosbox doesnt scale the fullresolution setting properly if output is our usual openglnb\direct3d\etc. So I can get scaling windowreolution, or properly scaled fullresolution, not both at the same time. I've looked into all the combinations I can think off for all the dosbox variants we use, tested them with all relevant combinations of colour\resolution our games currently use, tested if VHD's matter, or svga_et4000, and post the results below so that we can choose which compromise we wish to make. Hopefully its clear, I'm finding it difficult to put down on paper in a way that makes sense.

In all cases I lean towards option 2 as its simplest to implement, coincides with eXoDOS output setting for each dosbox fork which we picked for good reasons in each case, and the badly scaled font is usually not noticeable in game.

One interesting bi-product of all this is that no matter which methods we choose 800x600 and 1024x768 games are running in original res for window mode. So to get a proper 1280x960 scaled window the game needs to be in the lower 640x480 res.

Once you've decided which way to go I will generate the relevant lists of games not using the selected settings as I have a record of every games windows resolution and how many colours its set to use.


ECE

output=overlay Window mode: Doesnt scale with overlay (always win 3.1 res in dosbox window mode no matter windowresolution= value) Window mode, "scaler=normal2x forced": Scales to two times win3.1 res, dont use forced on higher than 640x480 Fullscreen mode: Black borders on all 4 sides with fullresolution=0x0, fullresolution=original works

output=openglnb Window mode: Scales to value set in windowresolution Fullscreen mode: fullresolution=original results in aspect=true being ignored and stretching the screen, fullresolution=0x0 isnt scaling correctly and results in bad fonts.

Ive tested and confirmed this issue on below setups:

gameres=640x480, 16.7m colour (example game: Silent Steel (1995)) gameres=800x600, 16.7m colour (example game: Labyrinth of Crete (1995)) gameres=640x480, 32k colour (example game: Star Trek Omnipedia (1995)) gameres=800x600, 32k colour (example game: WinAdv (1992)) gameres=1024x768, 64k colour (example game: SimAnt - The Electronic Ant Colony (1991)) gameres=800x600, 64k colour (example game: Microsoft Golf 2.0 (1995)) gameres=640x480, 64k colour (example game: Skat 3000 (1999)) gameres=640x480, 256 colour (example game: SimCity (1992)) gameres=1024x768, 256 colour (example game: SimLife (1992))

Results: As you can see there isnt a straight forward solution. I think there are two choices for ECE games:

    • Win 3.1 resolutions of 640x480 have: output=overlay, "scaler=normal2x forced", windowresolution=original, and fullresolution=original
    • Win 3.1 resolutions higher than 640x480 have: output=overlay, scaler=normal2x, windowresolution=original, and fullresolution=original.

Pro to this is fullscreen res works as it should, and both windowresolution\fullresolution settings are consistent for all ECE games.

Con is some fmv games might not scale as we arent using opengl and we are using fullresolution=original which reduces the resolution of the monitor instead of upscaling dosbox. As windowresolution setting isnt working with output=overlay in games using more than 256 colours we need to use the scaler= setting in conjunction with the "forced" flag. At 640x480 it forces dosbox to double the windowres to 1280x960, for 800x600 & 1024x768 we dont want the double windowres as its too large so we make do with those native resolutions which thankfully arent too small.

    • Win 3.1 resolutions of 640x480 have: output=openglnb, scaler=normal2x, windowresolution=1280x960, and fullresolution=0x0
    • Win 3.1 resolutions higher than 640x480 have: output=openglnb, scaler=normal2x, windowresolution=original, and fullresolution=0x0.

Pro is we are using opengl.

Con is fullresolution=0x0 doesnt scale properly resulting in bad fonts (though livable). Windowresolution needs different settings as 640x480 looks ok scaled to 1280x960, but 800x600 & 1024x768 look terrible.


Daum

output=direct3d Window mode: Scales to value set in windowresolution Fullscreen mode: fullresolution=original results in aspect=true being ignored and stretching the screen, fullresolution=0x0 isnt scaling correctly and results in bad fonts.

output=overlay Window mode: Doesnt scale with overlay (always win 3.1 res in dosbox window mode no matter windowresolution= value) Window mode, "scaler=normal2x forced": Scales to two times win3.1 res, dont use forced on higher than 640x480 Fullscreen mode: Black borders on all 4 sides with fullresolution=0x0, fullresolution=original results in aspect=true being ignored and stretching the screen

output=openglnb Window mode: Scales to value set in windowresolution Fullscreen mode: fullresolution=original results in aspect=true being ignored and stretching the screen, fullresolution=0x0 isnt scaling correctly and results in bad fonts.

output=ddraw Window mode: Scales to value set in windowresolution Fullscreen mode: fullresolution=original works, fullresolution=0x0 isnt scaling correctly and results in bad fonts.

Ive tested and confirmed this issue on below setups:

gameres=640x480, 64k colour (example game: L'affaire Morlov (1996)) gameres=640x480, 32k colour (example game: Treasure Quest (1996)) gameres=800x600, 32k colour (example game: Microsoft Bob (1995)) gameres=640x480, 256 colour, VHD (example game: Jack's Attic (1997)) gameres=1024x768, 256 colour (example game: WinTrek (1992))

Results: As you can see there isnt a straight forward solution. I think there are three choices for Daum games:

    • Win 3.1 resolutions of 640x480 have: output=ddraw, scaler=normal2x, windowresolution=1280x960, and fullresolution=original
    • Win 3.1 resolutions higher than 640x480 have: output=ddraw, scaler=normal2x, windowresolution=original, and fullresolution=original.

Pro to this is fullscreen res works as it should.

Cons are some fmv games might not scale as we arent using direct3d, directdraw is old and deprecated in windows, and we are using fullresolution=original which reduces the resolution of the monitor instead of upscaling dosbox. Windowresolution needs different settings as 640x480 looks ok scaled to 1280x960, but 800x600 & 1024x768 look terrible.

    • Win 3.1 resolutions of 640x480 have: output=direct3d, scaler=normal2x, windowresolution=1280x960, and fullresolution=0x0
    • Win 3.1 resolutions higher than 640x480 have: output=direct3d, scaler=normal2x, windowresolution=original, and fullresolution=0x0.

Pro is Daum gets to use direct3d.

Con is fullresolution=0x0 doesnt scale properly resulting in bad fonts (though livable). Windowresolution needs different settings as 640x480 looks ok scaled to 1280x960, but 800x600 & 1024x768 look terrible.

    • Win 3.1 resolutions of 640x480 have: output=overlay, "scaler=normal2x forced", windowresolution=original, and fullresolution=0x0
    • Win 3.1 resolutions higher than 640x480 have: output=overlay, scaler=normal2x, windowresolution=original, and fullresolution=0x0.

Pro is both windowresolution\fullresolution settings are consistent for all Daum games.

Cons are that (at least in eXoDOS) Daum doesnt really like Overlay, and fullresolution=0x0 has black borders on all four sides. As windowresolution setting isnt working with output=overlay in games using more than 256 colours we need to use the scaler= setting in conjunction with the "forced" flag. At 640x480 it forces dosbox to double the windowres to 1280x960, for 800x600 & 1024x768 we dont want the double windowres as its too large so we make do with those native resolutions which thankfully arent too small.


X

output=overlay is deprecated and just defaults to opengl

output=openglnb Window mode: Scales to value set in windowresolution Fullscreen mode: fullresolution=original results in non scaled image centred on screen without black bars, fullresolution=desktop isnt scaling correctly and results in bad fonts.

output=ddraw Window mode: Doesnt scale with ddraw (always win 3.1 res in dosbox window mode no matter windowresolution= value) Window mode, "scaler=normal2x forced": Scales to two times win3.1 res, dont use forced on higher than 640x480 Fullscreen mode: Black borders on all 4 sides with fullresolution=desktop, fullresolution=original results in non scaled image centred on screen without black bars

Ive tested and confirmed this issue on below setups:

gameres=640x480, 16.7m colour (example game: Monopoly (1995)) gameres=640x480, 32k colour, svga_et4000 machine, VHD (example game: C.H.A.O.S. Continuum, The (1994)) gameres=640x480, 256 colour (example game: Silent Thunder - A-10 Tank Killer II (1996)) gameres=800x600, 256 colour (example game: Enemy Nations (1996))

Results: As you can see there isnt a straight forward solution. I think there are two choices for X games:

    • Win 3.1 resolutions of 640x480 have: output=ddraw, "scaler=normal2x forced", windowresolution=original, and fullresolution=desktop
    • Win 3.1 resolutions higher than 640x480 have: output=ddraw, scaler=normal2x, windowresolution=original, and fullresolution=desktop.

Pro is both windowresolution\fullresolution settings are consistent for all X games.

Cons are some fmv games might not scale as we arent using opengl, directdraw is old and deprecated in windows, and we are using fullresolution=0x0 which has black borders on all four sides. As windowresolution setting isnt working with output=ddraw in games using more than 256 colours we need to use the scaler= setting in conjunction with the "forced" flag. At 640x480 it forces dosbox to double the windowres to 1280x960, for 800x600 & 1024x768 we dont want the double windowres as its too large so we make do with those native resolutions which thankfully arent too small.

    • Win 3.1 resolutions of 640x480 have: output=openglnb, scaler=normal2x, windowresolution=1280x960, and fullresolution=desktop
    • Win 3.1 resolutions higher than 640x480 have: output=openglnb, scaler=normal2x, windowresolution=original, and fullresolution=desktop.

Pro is we are using opengl.

Con is fullresolution=desktop doesnt scale properly resulting in bad fonts (though livable). Windowresolution needs different settings as 640x480 looks ok scaled to 1280x960, but 800x600 & 1024x768 look terrible.

exoscoriae commented 3 years ago

Lets start with option 2. A succinct list of all changes that need to be made would be appreciated. Along with the list of 69 games that require alternate settings and what those settings need to be.

Python-Exoproject commented 3 years ago

Heres the changes currently needed to go with option 2. There are three tabs on the spreadsheet, each dealing with a different setting.

Scaling.changes.xlsx

The first tab is split into games needing conf set to windowresolution=800x600 and games needing windowresolution=1024x768. All other Win3.1 games need windowresolution=640x480 as per our discord discussion.

My spreadsheet only has 1118 games on it so any past that point have not been checked but just make sure any newly added games are also set in the conf as per above. No biggie if you miss any though as I will scan it all again when these changes have been made to see if any where missed.

Dont forget to update the templates you use accordingly or new games will have to be adjusted later.

exoscoriae commented 3 years ago

All changes on the spreadsheet have been made. thanks for putting all of this together.

At this point I will beging updating the setup bat file to handle the various window sizes.

Python-Exoproject commented 3 years ago

Not sure if the template didnt get updated or these just came after I made the list but before you updated the template, but here are a couple of items missed of the spreadsheet:

Eyewitness Virtual Reality Earth Quest - Needs output=direct3d Focus Essential Senior Word Games - Needs output=direct3d Wizardry Gold - Needs fullresolution=0x0 Enemy Nations - Needs fullresolution=desktop C.H.A.O.S. Continuum, The - Needs fullresolution=desktop Math Master - Needs windowresolution=800x600 Spaceward Ho! - Needs windowresolution=800x600

After that it should be all good

exoscoriae commented 3 years ago

great, all changes made

Python-Exoproject commented 3 years ago

All changes confirmed. Im going to slap a hold on this one and move it to low priority instead of closing it as a reminder that we chose the better solution but that it still results in "off" fonts in fullscreen. We await a better solution to be discovered or dosbox development.

ant-222 commented 3 years ago

Sorry for interfering, but I have been receiving notifications about this issue. Upon skimming through the discussion, I still fail to see why... I beg pardon for the late reaction.

Python-Exoproject commented 3 years ago

@ant-222 Sorry that this is happening Anton. To my knowledge we haven't directly pinged you or added you to the issue, possibly its to do with kcgen linking this issue to one in the Dosbox Staging github?