snes9xgit / snes9x

Snes9x - Portable Super Nintendo Entertainment System (TM) emulator
http://www.snes9x.com
Other
2.66k stars 460 forks source link

Various rendering issues (v1.60 x64 on Win8 64 with amd drivers) #574

Open ghost opened 5 years ago

ghost commented 5 years ago

DirectDraw mode renders a slightly darker image than Direct3D or OpenGL modes.

Integer Scaling doesn't work correctly in any mode. In Direct3D and OGL it only goes up to 2x and should be able to go to at least 3x on my resolution (1600x900). 224x3=672<900. It doesn't seem to work at all in DirectDraw?

Bilinear filtering doesn't work in DirectDraw mode. Picture is always sharp with uneven pixels.

And this maybe isn't a bug but Blargg's NTSC filters have never looked right in this emulator. For an example to compare to, look at those filters in Mesen or Mesen-S, that's how they look on a real TV from the time (I grew up surrounded by them). You can even see the slight jitter around the edges of things with contrasting colors (which Snes9x has never done). The filters also make the image narrower due to the blending of the black on the sides (which technically would be the frame of the tv, and not part of the picture tube) with what the console is outputting.

bearoso commented 5 years ago

Directdraw is a fallback and should basically never be used.

Integer scaling works, but you’re probably using a filter. In that case it’s only going to scale in those multiple of the filter size. Otherwise you’d have alternating row sizes. The Windows version of Snes9x doesn’t expose all the NTSC filter options, in your case a setting called “merge fields” is used all the time, removing the dot crawl.

ghost commented 5 years ago

Okay, you're right about the filter. I was using Simple 2x, and set it to None, and integer scaling works. Kind of a bummer that the Windows version removes the dot crawl, it just doesn't look right without it, and I remember it so clearly (why I do at my age I don't know lol). Is it just not possible without a big slowdown on Windows?

bearoso commented 5 years ago

I think it's because there's so many options related to the filter that whoever added it to Windows couldn't fit them all in the dialog and just opted for the presets. For reference, here's the GTK version:

Screenshot from 2019-09-14 19-03-26

We could probably add a box for the merge fields option somewhere.

bearoso commented 5 years ago

I've looked into it, and for the NTSC filter it appears we're not setting the burst phase for each frame on any platform, which means the dot crawl effect isn't quite right. Mesen isn't doing it right, either. It's only alternating between 0 and 1 when it's supposed to cycle between 0, 1, and 2. Oops.

ghost commented 5 years ago

Oh wow so linux is getting all the good stuff all this time. Windows doesn't even have the monochrome option.

ghost commented 5 years ago

Okay, was looking at gametechwiki's filters page and under blargg's NTSC entry it states "RF preset is just composite with field merging disabled, so it emulates the oscillating artifacts composite output has."

I think maybe instead of adding a checkbox into the UI for merging fields, it would make more sense and be less confusing to end-users to just add an RF preset like bsnes has, right above the Composite preset.

bearoso commented 5 years ago

OK, I added the RF preset and also fixed the burst phase emulation, so even the Composite preset will look crappier than before.

If you want to try it, follow this: https://github.com/snes9xgit/snes9x/wiki/How-do-I-download-a-prerelease-build%3F

OV2 commented 5 years ago

When I added the blargg filter I simply used the three presets provided (no Idea why I skipped monochrome) and left it at that. We could probably add the various options to the conf file, but I'm not sure it's worth it.