Video config — bug report & some suggested features

Found a bug? Please report it, but remember to follow the bug reporting guidelines.
Missing a sane feature? Let us know!
But please do NOT request ports to other systems.

Moderator: ZSNES Mods

Post Reply
Grand Dizzy
New Member
Posts: 3
Joined: Sun Oct 30, 2005 10:54 pm

Video config — bug report & some suggested features

Post by Grand Dizzy »

First of all I'm new to the forum so I'd just like to say a big THANK YOU to the devs for your great work on ZSNES! I've used your emulator for many years and I absolutely love it! I know the GUI isn't to everyone's tastes, but I think it's really charming and really emphasises the fun of playing SNES games. I especially love that snow effect, which I always turn on over my Christmas holidays! :) Anyway, down to business...

Bug report
This is quite a simple bug, but I'm amazed no one has reported this before now as it renders ZSNES unusable...

Since version 1.40, ZSNES has automatically started up in a window with 16 bit depth colour. On my computer, my desktop is set to 32 bit depth colour and ZSNES doesn't appear at all — just a black square. Most people in this situation would have no way of knowing why it wasn't working and I only figured it out by trial and error (I switched my desktop to 16 bit depth colour and it worked fine).

I would strongly suggest that you set it to start up in 32 bit colour mode, otherwise people with a setup like mine will be binning your emulator before they've even had the chance to see the GUI!

My specs: I'm running Windows XP Pro; ATI All in Wonder 128 graphics card; Dell 2405FPW LCD monitor.

Suggested features...
Also, I have a few features to suggest for the video config section. If anything here has already been requested/discussed please accept my apologies and ignore it.

Scaline settings
First, I always find 25% scanlines too faint, and 50% scanlines too strong. Would it be possible to allow a custom percentage, or offer intermediate setting(s)?

Horizontal interpolation
Another thing I'd love is horizontally interpolated scaling. Here're 3 reasons why this would be a good feature:
1) The scanlines soften the pixelation vertically, but you still notice pixellation horizontally — interpolation would fix this.
2) It would also give the impression of the game being slightly higher resolution, as there would be more detail.
3) Finally, it would make all the pixel columns appear more even (with the current method of scaling, I'm getting some 2-pixel-wide columns and some 3-pixel wide columns and it can look quite uneven sometimes.

New scaling options
My final suggestion is about the scaling. Currently, when you choose "scaled" it fills the whole width of the screen, which is a HUGE improvement on the old way of scaling, and very welcome. However, this still isn't perfect for me because the screen is now too wide (with bars at the top and bottom). Granted, many monitors let you adjust the horizontal/vertical stretch of the screen — but mine doesn't. All I can do with my monitor is zoom in and out, which means the image needs to be the correct shape in the first place before I zoom it to fill the screen.

I'm sure I can't be the only person who would like more accurate control of the scaling. So, I would like to suggest that you allow us to customise the horizontal stretch of the screen, so we can get it to just the right shape.

Picture Geomery dialogue
Alternatively, (and more ambitiously!) I have come up with a set of options for controlling the scaling which I call "Picture Geometry". These options would make it easy for newbies to set up ZSNES properly for their monitor (without having to work anything out), while also giving more advanced control to the techies.

These options would be best suited to drop-down menus but I don't think the ZSNES GUI supports drop down menus, so — if you were to implement this — it'd probably need its own dialogue box.


PICTURE GEOMETRY
------------------------------------------

Your monitor's aspect ratio:
  • 5:4 narrow monitor
    4:3 standard (SNES standard) <- default
    16:10 widescreen
    16:9 widescreen
------------------------------------------

Desired picture size:
  • 1x height (224 pixels tall)
    2x height (448 pixels tall) <- default
    4x height (896 pixels tall)
    Stretch to screen edge (keeps aspect ratio)
    Stretch to fill whole screen
[NB: 2x and 4x options would only be available when the resolution permitted it.]
------------------------------------------

Desired picture shape:
  • 8:7 native graphic (square pixels)
    5:4 narrow
    4:3 undistorted (SNES standard) <- default
    16:10 widescreen / lazy PAL conversion
    16:9 widescreen
    Full width <- not available when using 'stretch' modes
[NB: The documentation should point out that the "8:7 native graphic (square pixels)" option will not be proportionate if your pixels aren't square. In other words, if the aspect ratio of your resolution doesn't match the aspect ratio of your screen.]

[Also note that 16:10 is the exact same aspect ratio of both 16:10 widescreen monitors (like mine) and many of the early SNES games which were lazily/sloppily converted for PAL countries. After spending my childhood playing games like Mario Kart in 16:10 aspect ratio, I now find it hard to adjust to the 'normal' 4:3 shape.]


In case you do decide to implement this feature, I've also come up with the basic algorhithm for calculating the width of the image in pixels...

[height of image in pixels]
  • x [monitor's aspect ratio - vertical]
    / [screen resolution - vertical]
    x [screen resolution - horizontal]
    / [monitor's aspect ratio - horizontal]
    / [desired aspect ratio - vertical]
    x [desired aspect ratio - horizontal]

    = width of image in pixels
For example, if your monitor was 16:10, running 640x480 resolution, and you desired a 4:3 aspect ratio shape, and picture size was set to 2x height (448 pixels tall)...
  • 448 x 10 / 480 x 640 / 16 / 3 x 4 = 497.778
So the image would be 448 pixels tall by 498 pixels wide, which would give a perfect 4:3 (undistorted) picture on a 16:10 monitor at 640x480!

Hope this helps ZSNES.

Lee
Jipcy
Veteran
Posts: 768
Joined: Thu Feb 03, 2005 8:18 pm
Contact:

Post by Jipcy »

ZSNES Documentation wrote:Q: Why do I get a black (or corrupted) box when I start up ZSNESw?
A: Try pressing Alt+Enter to switch to fullscreen. Also make sure that you have the latest video card drivers and the latest version of DirectX installed. If that didn't help, check your desktop color settings and make sure that the number of colors is set to either 16-bit or 32-bit (since ZSNESw will only work with those modes).
[REQ] More scanline options

About horizontal interpolation, I don't know anything about that. There is an interpolation option that you can use with scanlines. Are you saying that this option only interpolates vertically and not horizontally?

As for the picture geometry idea, I seriously doubt that will be implemented any time soon, especially not while we have the current GUI. Those options may, possibly be implemented in the future, perhaps when we have a new GUI.

You might be able to achieve the desired behavior by selecting the correct resolution for your monitor: either your monitor's native resolution, or a resolution with the same aspect ration as your monitor.
[url=http://zsnes-docs.sf.net]Official ZSNES Docs[/url] | [url=http://zsnes-docs.sf.net/nsrt]NSRT Guide[/url] | [url=http://endoftransmission.net/phpBB3/viewtopic.php?t=394]Using a Wiimote w/ emulators[/url]
Grand Dizzy
New Member
Posts: 3
Joined: Sun Oct 30, 2005 10:54 pm

Post by Grand Dizzy »

Jipcy wrote:
ZSNES Documentation wrote:Q: Why do I get a black (or corrupted) box when I start up ZSNESw?
A: Try pressing Alt+Enter to switch to fullscreen. Also make sure that you have the latest video card drivers and the latest version of DirectX installed. If that didn't help, check your desktop color settings and make sure that the number of colors is set to either 16-bit or 32-bit (since ZSNESw will only work with those modes).
I don't know how many people this problem affects, but surely it's a lot easier to just make it start in 32 bit mode by default instead of having to search for a solution on here (which I wasn't able to find, despite a few searches). More likely that people will just give up and not use ZSNES. Depending on what sort of community the ZSNES community are, this may or may not be a bad thing.
Jipcy wrote:About horizontal interpolation, I don't know anything about that. There is an interpolation option that you can use with scanlines. Are you saying that this option only interpolates vertically and not horizontally?
No, sorry I didn't explain it very well. All I mean is that the image is natively very pixellated. When you add the scanline effects, it does a lot to reduce the blockiness and makes it easier on the eyes, (particularly in the vertical direction), but you still see a lot of pixellation in the horizontal direction, and interpolating the image horizontally would resolve that.
Jipcy wrote:You might be able to achieve the desired behavior by selecting the correct resolution for your monitor: either your monitor's native resolution, or a resolution with the same aspect ration as your monitor.
No, this will not work because the image never fills the screen vertically (at least not with scanlines turned on). If the image doesn't fill the screen vertically then I can never get it to fill the whole screen because my monitor has no vertical stretch control.
Jipcy
Veteran
Posts: 768
Joined: Thu Feb 03, 2005 8:18 pm
Contact:

Post by Jipcy »

First off, what version and port of ZSNES are you using? Version 1.42 for Windows? Or perhaps a more recent WIP? Or perhaps another port? I use Windows, so everything I say references the Windows port.

Also, what type of monitor (LCD or CRT) are you using? If an LCD, what is its native resolution (or what is your desktop resolution)? Are you playing this on a computer monitor or on a TV somehow?

What ZSNES video settings (resolution, D/S/R combination, windowed or fullscreen), filters (interpolation, HQ*X), vsync, and scanline percentage are you using right now?
Grand Dizzy wrote:and interpolating the image horizontally would resolve that.
There IS an interpolation video filter, at least in the Windows port. Are you using this?
Grand Dizzy wrote:No, this will not work because the image never fills the screen vertically (at least not with scanlines turned on). If the image doesn't fill the screen vertically then I can never get it to fill the whole screen because my monitor has no vertical stretch control.
Answer all my questions at the top and we might be able to find out why that is happening.
[url=http://zsnes-docs.sf.net]Official ZSNES Docs[/url] | [url=http://zsnes-docs.sf.net/nsrt]NSRT Guide[/url] | [url=http://endoftransmission.net/phpBB3/viewtopic.php?t=394]Using a Wiimote w/ emulators[/url]
Shinrin
Rookie
Posts: 31
Joined: Wed Jan 19, 2005 7:13 pm
Location: 127.0.0.1

Post by Shinrin »

ah the black box... i love it! not really, but i've seen it alot though, on my college computers.. and on my computer, but that's under windows server 2003. Me and this guy figure out how to run the emulator. just put it to 16-bit and it works. i'm using the same driver for both operating system.. and DX9.0c so maybe it's an operating system problem?
[img]http://i533.photobucket.com/albums/ee335/mcsigshop/Shinrin.png[/img]
Grand Dizzy
New Member
Posts: 3
Joined: Sun Oct 30, 2005 10:54 pm

Post by Grand Dizzy »

Jipcy,

First of all, I must apologise. There is indeed an interpolation option in ZSNES! I have absolutely no idea how I could've been so dumb as to miss that! I seem to remember turning it on a long time ago, not being keen on what I saw, then never touching it again, along with all the other filters.

Just as I requested, the interpolation filter appears to operate horizontally when you turn scanlines on. It's absolutely exactly what I was asking for. So I'm kinda happy about that. I'm also annoyed with myself for being such a dimwit!

My aspect ratio problem

To answer your questions, I'm using the latest WIP version (v1.43, October 20th 2005). My computer monitor (which I use for ZSNES) is a 16:10 LCD and its native resolution is 1920x1200 (which isn't supported by ZSNES).

The resolution I'm using is 640x480 DS F (which seems to be the only resolution that gives 'neat' scanlines for me, all the other resolutions seem to stretch the image to non-multiples of 224, which makes all the scalines uneven and extremely distracting).

The only settings I have ticked in the video config options are 'scanlines 25%', 'triple buffer' and (as of now) 'interpolation'.

Some pics for ya
Finally, I love the interpolation filter, but for some games it almost seems a little too blurry. And no interpolation at all seems too sharp.

I was just experimenting with having 50% interpolation in Photoshop (a 50% mixture of interpolated and non-interpolated). I actually think this looks pretty good, but see for yourself...

(I just noticed I did the text wrong... the caption in the third picture should say "no interpolation" instead of looking garbled!)

ImageImageImage


ImageImageImage


ImageImageImage


ImageImageImage

Actually, these all look fine when you see them in Windows. You need to download them and view them blown up to appreciate the difference!

I'm guessing this 50% effect would be pretty CPU intensive. But maybe not? If it were possible, I'd definitely like to see it in ZSNES.
Jipcy
Veteran
Posts: 768
Joined: Thu Feb 03, 2005 8:18 pm
Contact:

Post by Jipcy »

Well, thank you for those examples of 50% interpolation. I really have no idea how CPU intensive that would be, nor how hard it would be to implement in ZSNES.

About your aspect ratio, have you tried using a DR mode? That locks the aspect ratio so you should get a nicer picture than an extremely stretched one across 1920 pixels.

Also, try both 800x600 and 1600x1200 settings in ZSNES. As you can see, the vertical resolution of both of those modes fits the number of pixels in your monitor much better than 480 pixels. I'm not sure how scanlines would look at either of those resolutions.

Are you using a laptop? Or is this a desktop monitor? Anyway, you might also try looking into your video card drives, or possibly the monitor settings. At least on my laptop's video drivers, there is an option to choose whether the video card stretches the video signal to fill the screen or stretches it as much as it can in whatever direction while keeping the aspect ratio the same.

Anyway, the point is, you have to choose between ZSNES looking vageuly correct (with correct aspect ratio) or to fill your entire screen (which in your case is going to distort it pretty badly).

Also, to sum up, try some of the other resolution settings in ZSNES. Specifically, try settings that are whole-number fractions of the number of vertical pixels in your screen. Currently, your options for that are 800x600 (half the number of vertical pixels) and 1600x1200 (all vertical pixels). And compare the difference between DR and DS modes to see which you prefer.
[url=http://zsnes-docs.sf.net]Official ZSNES Docs[/url] | [url=http://zsnes-docs.sf.net/nsrt]NSRT Guide[/url] | [url=http://endoftransmission.net/phpBB3/viewtopic.php?t=394]Using a Wiimote w/ emulators[/url]
Noxious Ninja
Dark Wind
Posts: 1271
Joined: Thu Jul 29, 2004 8:58 pm
Location: Texas
Contact:

Post by Noxious Ninja »

Ask Aerdan to add a 1920x1200 DR FULL mode.

http://board.zsnes.com/phpBB2/viewtopic.php?t=4594
[u][url=http://bash.org/?577451]#577451[/url][/u]
Aerdan
Winter Knight
Posts: 467
Joined: Mon Aug 16, 2004 10:16 pm
Contact:

Post by Aerdan »

Use 1680x1050. It has the same aspect ratio.
Post Reply