DerKoun / bsnes-hd

bsnes fork that adds HD video features
GNU General Public License v3.0
632 stars 36 forks source link

Addressing proper defaults #33

Closed FitzRoyX closed 4 years ago

FitzRoyX commented 4 years ago

You may have noticed Ocesse's Metroid videos have audio crackling in the background. bsnes regular has, IMO, terrible defaults. As a result, first impressions can be poor and there's a lot of hoop jumping to get things looking and sounding unaltered.

The vast majority of games are also designed for square pixels and unevenly stretching those that aren't is simply creating a bigger visual problem. The reasons why and numerous examples is my next article on the forums, but you can get a shallower breakdown here https://www.youtube.com/watch?v=ssluTgfkdlg.

This is what needs changed to remove all video and audio alterations (uneven stretching, blurring, crackling, and black crush): Video -Shader: None (changed from Blur) -Blocking: true (changed from false) -AspectCorrection: false (changed from true) -Gamma: 100 (changed from 150) -Output: Center (changed from scale)

Audio -Blocking: false (changed from true) -Dynamic: true (changed from false)

ps: for what reason did you want the "none/mode7/all" selection process? Aren't people just using bsnes regular for unconverted games?

DerKoun commented 4 years ago

I grouped the settings for easier discussion:

Stretching AR changes: -Aspect Correction: false (changed from true) Thought I had it that way already, but missed one place in the code (oops), changed

Video Colors: -Gamma: 100 (changed from 150) I must note that in the current release the gamma formula is wrong (my mistake). Still I have had another request for this change, so I'll change it for now and maybe put it up for discussion.

Integer scaling: -Shader: None (changed from Blur) -Output: Center (changed from scale) I prefer integer scaling myself. However, the current settings provide better results for people that don't want tweak settings. So I'll keep them. But I have made a note to have "integer scaling" in the "How To" section I'll add to the readme.

Driver Settings: -Video Blocking: true (changed from false) -Audio Blocking: false (changed from true) -Audio Dynamic: true (changed from false) So is it sure that this change doesn't break anything or has negative effects, on any combination of OS, hardware and drivers?

About the widescreen modes: -none: Disables widescreen, for those that don't like it. -all: Enables widescreen everywhere, for those that want to experiment -mode7 (default): Enables widescreen for mode7 scenes only, as these mostly work well and the rest mostly does not I'm not sure I understand the question. You may have to elaborate.

FitzRoyX commented 4 years ago

I did notice the gamma issue reported by someone else. Yes, your 150 is darker than byuu's 150, so that is a new bug. 100 is the normal level used by all other emulators. byuu's defaults are what he prefers, which is CRT alteration and not raw output or artistic intent.

I prefer integer scaling myself.

So do I, that's what center does. These settings are poorly named, so I'll tell you what they each do: Center: Max integer scaling Scale: Max non-integer scaling (aspect preserved) Stretch: Max non-integer scaling (aspect ignored)

So is it sure that this change doesn't break anything or has negative effects, on any combination of OS, hardware and drivers?

It almost certainly works on every Windows box. byuu uses freeBSD and Dynamic Rate doesn't work on his linux audio cores yet. But this doesn't really explain why Windows packages (the one affecting most users by far) default with it off. There are probably several ways to fix this, from compile options, to including a pre-filled settings file.

I'm not sure I understand the question. You may have to elaborate.

Let's pretend I'm a new user. This is my first experience with this feature. I download your fork and my first patch, Super Metroid. I run it and it isn't widescreen. What did I do wrong? Widescreen is disabled by default for non-mode7 games and people aren't going to know that.

Pending the more elaborate patch cfg db, are you not able to simply code "if a bps patch is applied, widescreen=true for duration of play"?

DerKoun commented 4 years ago

These settings are poorly named, so I'll tell you what they each do: Center: Max integer scaling Scale: Max non-integer scaling (aspect preserved) Stretch: Max non-integer scaling (aspect ignored)

I'm sorry, but I'm perfectly aware how these options work.

So is it sure that this change doesn't break anything or has negative effects, on any combination of OS, hardware and drivers?

It almost certainly works on every Windows box. byuu uses freeBSD and Dynamic Rate doesn't work on his linux audio cores yet. But this doesn't really explain why Windows packages (the one affecting most users by far) default with it off. There are probably several ways to fix this, from compile options, to including a pre-filled settings file.

I'd like to avoid system-specific code, especially as I can't test on all supported systems. May be I can add an auto setting that sets all 3 based on whether the audio driver supports dynamic. I'll have to look into that.

I'm not sure I understand the question. You may have to elaborate.

Let's pretend I'm a new user. This is my first experience with this feature. I download your fork and my first patch, Super Metroid. I run it and it isn't widescreen. What did I do wrong? Widescreen is disabled by default for non-mode7 games and people aren't going to know that.

Anyone using a patch can change 2-3 settings. The defaults are for people just trying it without tweaking or patches.

Pending the more elaborate patch cfg db, are you not able to simply code "if a bps patch is applied, widescreen=true for duration of play"?

That one setting is not enough. You at least also need unsafe sprites. I would not make that a general override, as there are also other kinds of patches. But I'll look into settings that depend on a patch being used.

FitzRoyX commented 4 years ago

I'm sorry, but I'm perfectly aware how these options work.

Yeah, my bad. I misread your post as saying that center wasn't integer scaling.

DerKoun commented 4 years ago

Ah, I see. I should have added a ", too" there, or something (not a native English speaker). I meant that I prefer the same settings as you, but don't think they are the best defaults.

FitzRoyX commented 4 years ago

That one setting is not enough. You at least also need unsafe sprites. I would not make that a general override, as there are also other kinds of patches. But I'll look into settings that depend on a patch being used.

I do understand that patches require more settings to look proper, and those settings can conflict with other patches. But I don't see widescreen itself as a conflicting option for patches. If it got enabled, noobies would at least see the expanded drawing and not give up. It may not look perfect without those further adjustments, but at least you wouldn't risk them thinking they got the wrong patch or renamed it wrong. They might go into the settings and figure it out, or read the manual. But they may not. The average person has no technical knowledge and little patience for "reading manuals". You can see some of this already with the questions you're getting in discord wondering how bsnes and bsneshd are different.

DerKoun commented 4 years ago

Auto-activating Widescreen without Unsafe Sprites would be worse then doing nothing. But I had a look at setting-override files again and may have found a way to add them in a primitive way. No promises, but I'll try.

DerKoun commented 4 years ago

changed some, added first version of simple setting override files, guides in readme pending