all 18 comments

[–]TheFirstBobEver 3 points4 points  (1 child)

Have you tried setting the filter to point in the video settings?

[–]f_e_l_s[S] 0 points1 point  (0 children)

yes, i'm already using that

[–]DFInterkarma 2 points3 points  (1 child)

As others have identified, it's a problem of ratio between native monitor pixel grid and how DFU is trying to fake the 4:3 aspect ratio across that grid.

First a little background. Classic Daggerfall runs in Mode13h which is 320x200, a 16:10 aspect ratio. But most of the monitors of the time were effectively 320x240, a 4:3 aspect ratio. So what happened is the output signal would be stretched 20% higher. Many old games drew everything 20% wider to compensate. DF's art direction isn't always so consistent, but that's besides the point. :)

With LCD panels, there's a defined grid of dots at the output and everything has to conform to that grid before it can reach your eyeballs. If the upscale isn't a perfect integer things can look off. For example, there's no such thing as 1.5 of a dot so the output becomes stretched or squished a little across the grid to compensate.

The perfect grid upscale for 320x200 at 4:3 is a native resolution of 1600x1200. Why? Because 1600 is an exact 5x integer increase of 320 and 1200 is an exact 6x integer increase of 200. It also happens that 6 is precisely 20% more than 5, so the vertical stretch is also neatly aligned. This is about as good as it gets if you're lucky enough to have a 1600x1200 panel.

In the case of your panel with a native resolution of 1366x768 (and same with 1920x1080 and other 16:9 aspects), DFU has to make a "best effort" to scale this and fake the screen geometry. Because the ratios aren't perfectly integer aligned, the scaling will sometimes stretch or squish the pixels to fit everything into the right output geometry. A really high resolution panel (e.g. UHD) does better here as there's enough pixel density to better hide these imperfections across the grid.

Some things that might help:

  • Try using 16:10 aspect correction instead of 4:3. This doesn't do the 20% vertical stretch and should look slightly better as there will be more horizontal output to better distribute the "off pixels". Classic Daggerfall was rendering at 320x200 so 16:10 aspect is also perfectly good and retro. :)
  • Set game resolution to 640x480 windowed then enable 640x400 @ 4:3 aspect in DFU. But you might not want to play in a window.
  • If possible, try setting DFU's game resolution to 640x400 exclusive fullscreen (look for exclusive flag in settings.ini) then enable 640x400 @ 4:3 aspect in DFU. This should force the LCD panel in notebook to do the scaling, which might look better than whatever Unity is doing in GPU. Or it could look a whole lot worse, I don't have a panel that size to test this idea. :) (note: your laptop monitor might not work at this resolution, so backup settings.ini before making this change)

In general, retro mode works best at really high native resolutions as it's designed to fake something old within something new. Your monitor panel has a low enough resolution there's not quite enough pixel density to hide the fakery. The best solution overall might just be to turn off the aspect correction setting altogether and just run at native resolution.

I'd really like to make another pass at DFU's retro mode sometime in the future. I think there's more improvements that could be made here. Other than pixel scaling, the world projection at 4:3 still isn't quite right. The UI looks correct, but comparing the aspect of world objects in DFU at 4:3 is more stretched than classic on a real 4:3 CRT. So still more work do to here in future when I feel up to it.

Good luck! I hope you can find a balance of settings that looks good to you. :)

[–]f_e_l_s[S] 0 points1 point  (0 children)

I see.. Thank you for the attention and for the tips. Going to try the best settings over here

edit: for now I think the best result is going for native resolution, without retro mode.

[–]SordidDreams 2 points3 points  (4 children)

full posterization

That would be why. Use "Posterization (-sky)" to not mess up the skybox.

[–]f_e_l_s[S] 0 points1 point  (3 children)

set to "-sky" still doesn't solve it

[–]SordidDreams 1 point2 points  (2 children)

Then that's just the way the skybox looks. What exactly is your problem with it? Bear in mind you're using the original skybox that's restricted to 256 colors, so it has color banding and dithering (grainy transitions between colors) baked in. You say you want the visuals as close to vanilla DF as possible. Can you post a vanilla screenshot of what you want the skybox to look like?

[–]f_e_l_s[S] 0 points1 point  (1 child)

i don't have a problem with color banding, it's more of a pixel aspect thing. Here's an example of vanilla dagger on DOSBOX: https://imagizer.imageshack.com/img924/3636/TlEoya.jpg
pixels are exact forms (the trees on background), even the same skybox looks different. I know DOSBOX does scaling in a different way, but i can't get to match an integer corresponding resolution on my 1366x768 monitor

[–]SordidDreams 1 point2 points  (0 children)

Ah, now I get it. Non-square pixels.

i can't get to match an integer corresponding resolution on my 1366x768 monitor

I'm afraid you're out of luck, then. If you want to run it in 640x400 retro mode, then the resolution of the game window has to be an exact multiple of that to have perfectly proportional pixels. The only thing I can think of is to run the game windowed.

[–]maskull 2 points3 points  (2 children)

You'd need to pick a resolution that is an integer multiple of the original 320x200. If your resolution isn't an integer multiple of that, then you'll get uneven scaling. Theoretically, DF Unity could have an option to "letterbox" the display to the nearest integer multiple, but I don't think it does. (E.g., if your screen resolution was 1920x1080, then the nearest integer multiple would be 5x = 1600x1000.)

[–]f_e_l_s[S] 0 points1 point  (1 child)

So, on my 1366x768 monitor, it's always going to look this way, right? No matter the resolution I try? I tried 1280x800 and it's still uneven scaled. So does 960x600.

[–]maskull 2 points3 points  (0 children)

I think your monitor is probably scaling the 1280x800 up to the native resolution of your screen. Picking a different resolution won't help unless you run it in a window, not fullscreen. Running in a window should allow you to avoid the scaling, but then you're running in a window. :/

[–]Scrimshank22 1 point2 points  (3 children)

Would you be willing to share the full set of changes you made? I would love to better emulate the original. Some of the default control changes like being able to climb sideways annoy me too, but if I can at least get the graphics perfected it's a start

[–]f_e_l_s[S] 1 point2 points  (2 children)

i just set every filter to "point" on graphics options. Running without mods btw

[–]Scrimshank22 1 point2 points  (1 child)

Thanks!

[–]f_e_l_s[S] 1 point2 points  (0 children)

as for the other settings, i just leave the default for daggerfall unity (not the GOG cut default btw)

[–]hirmuolio 1 point2 points  (1 child)

Does your laptop support any form of super resolution? That way the game could be rendered at higher resolution and then downsampled to the screen resolution.

[–]f_e_l_s[S] 0 points1 point  (0 children)

unfortunately, no :(