SourMesen / Mesen-S

Mesen-S is a cross-platform (Windows & Linux) SNES emulator built in C++ and C#
GNU General Public License v3.0
415 stars 102 forks source link

Video Filters #5

Open Cibomatto2002 opened 5 years ago

Cibomatto2002 commented 5 years ago

Doesn't seem like most of the filters work or they don't work well. Here is a video of me trying to get them to work. Mesen-S Ver. 01.0.5. Also if I try to go to https://www.mesen.ca/snes/ I get a 403 Forbidden error.

https://www.youtube.com/watch?v=dA1H3QzqNuc&feature=youtu.be

SourMesen commented 5 years ago

This is caused by the fact the core currently always renders a 512x478 picture, which is what gets filtered (instead of the typical 256x239 resolution). It was mostly a temporary workaround for now, but I'll keep this opened until I get it fixed, thanks!

SourMesen commented 5 years ago

This should be working much better as of the latest commit - the emulator outputs in 256x239 res so long as the game does not use any of the high resolution modes during that frame, so filters like xbrz should be having the correct effect in the majority of games now.

Cibomatto2002 commented 5 years ago

It's working really good. :)

ghost commented 5 years ago

Interesting. Bsnes .108 can't filter this mode.512x478. I wonder what is different. Not competing emulators. I'm a fan of both byuu and SourMesen's work

hackneyed-one commented 4 years ago

Hi Sour I noticed this is happening in the libretro/Retroarch core too. On Linux and Android using the latest core Mesen-s 0.3.0 when i turn filters on it switches the resolution (internally?) to 478p breaking most scanline shaders.

OS: Linux Mint 18.x / Android 9 Program: Retroarch 1.7.8 / 1.8.2 Core: Mesen-s downloaded today Shader: Crt-easymode Rom: 240pSuite

SourMesen commented 4 years ago

@hackneyed-one That sounds like the same issue that Awakened0 described in #24, I think? Basically the core only outputs either 256x240 or 512x480, but it can't do 512x240 at the moment (like what I'm assuming snes9x does.) It's something I'll fix, just haven't gotten around to it just yet.

hackneyed-one commented 4 years ago

@SourMesen

No sorry that's not what I'm testing. I never seem to be able to explain myself shortly and concisely.

This bug report sounded like a similar issue was fixed in the main program but I thought maybe the libretro code was over looked or not yet looked into so I wanted to add information here. If you would like I could open another bug report with this info to separate it?

What I'm trying to explain is that turning on the internal core option for NTSC shader to anything other than "None" forces output to be 480p or something even if the game is running in 240p.

Relevant info: Crt-easymode makes scanlines unless content is over 400p then it will do a flickering de-interlace to simulate the flickering of 480i game content on a crt.

Example: Playing Super Mario World level 1 or 2 in Retroarch with crt-easymode shader produces the intended scanline effect. However switching on Mesen-s' internal NTSC shader to composite for instance causes crt-easymode to flicker de-interlace the image meaning SMW is now being displayed above 400p. Switching Mesen-s back to NTSC shader "none" allows crt-easymode to display scanlines again meaning SMW is back to 240p.

I hope this helps and thank you for listening!

SourMesen commented 4 years ago

@hackneyed-one That's a different but similar issue - the NTSC filter automatically doubles both the width/height of the image. This is because the NTSC filter does double the width, and then the code doubles the height to keep the same aspect ratio. This was a problem with Mesen's NTSC filter at first too, but rather than just copy that fix, I want to see how I want to handle video output in general (e.g taking into account what was said in #24, for example)