Mesen-SX/UI/Config/VideoConfig.cs
Sour 5daa1b6225 Video: Fixed/changed some aspect ratio calculations
-Fixed calculation for width for NTSC/PAL
-NTSC/PAL are PAR, as before, but 4:3/16:9 are now DAR instead, since their purpose is to fill the user's screen, regardless of overscan settings
2020-04-29 20:24:21 -04:00

97 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Mesen.GUI.Config
{
[StructLayout(LayoutKind.Sequential)]
public class VideoConfig : BaseConfig<VideoConfig>
{
[MinMax(0.1, 10.0)] public double VideoScale = 2;
[MinMax(0.1, 5.0)] public double CustomAspectRatio = 1.0;
public VideoFilterType VideoFilter = VideoFilterType.None;
public VideoAspectRatio AspectRatio = VideoAspectRatio.NoStretching;
[MarshalAs(UnmanagedType.I1)] public bool UseBilinearInterpolation = false;
[MarshalAs(UnmanagedType.I1)] public bool BlendHighResolutionModes = false;
[MarshalAs(UnmanagedType.I1)] public bool VerticalSync = false;
[MarshalAs(UnmanagedType.I1)] public bool IntegerFpsMode = false;
[MarshalAs(UnmanagedType.I1)] public bool HideBgLayer0 = false;
[MarshalAs(UnmanagedType.I1)] public bool HideBgLayer1 = false;
[MarshalAs(UnmanagedType.I1)] public bool HideBgLayer2 = false;
[MarshalAs(UnmanagedType.I1)] public bool HideBgLayer3 = false;
[MarshalAs(UnmanagedType.I1)] public bool HideSprites = false;
[MarshalAs(UnmanagedType.I1)] public bool DisableFrameSkipping = false;
[MinMax(-1, 1.0)] public double Brightness = 0;
[MinMax(-1, 1.0)] public double Contrast = 0;
[MinMax(-1, 1.0)] public double Hue = 0;
[MinMax(-1, 1.0)] public double Saturation = 0;
[MinMax(0, 1.0)] public double ScanlineIntensity = 0;
[MinMax(-1, 1.0)] public double NtscArtifacts = 0;
[MinMax(-1, 1.0)] public double NtscBleed = 0;
[MinMax(-1, 1.0)] public double NtscFringing = 0;
[MinMax(-1, 1.0)] public double NtscGamma = 0;
[MinMax(-1, 1.0)] public double NtscResolution = 0;
[MinMax(-1, 1.0)] public double NtscSharpness = 0;
[MarshalAs(UnmanagedType.I1)] public bool NtscMergeFields = false;
[MinMax(0, 100)] public UInt32 OverscanLeft = 0;
[MinMax(0, 100)] public UInt32 OverscanRight = 0;
[MinMax(0, 100)] public UInt32 OverscanTop = 7;
[MinMax(0, 100)] public UInt32 OverscanBottom = 8;
[MarshalAs(UnmanagedType.I1)] public bool FullscreenForceIntegerScale = false;
[MarshalAs(UnmanagedType.I1)] public bool UseExclusiveFullscreen = false;
public UInt32 ExclusiveFullscreenRefreshRate = 60;
public UInt32 FullscreenResWidth = 0;
public UInt32 FullscreenResHeight = 0;
public void ApplyConfig()
{
ConfigApi.SetVideoConfig(this);
}
}
public enum VideoFilterType
{
None = 0,
NTSC,
xBRZ2x,
xBRZ3x,
xBRZ4x,
xBRZ5x,
xBRZ6x,
HQ2x,
HQ3x,
HQ4x,
Scale2x,
Scale3x,
Scale4x,
_2xSai,
Super2xSai,
SuperEagle,
Prescale2x,
Prescale3x,
Prescale4x,
Prescale6x,
Prescale8x,
Prescale10x
}
public enum VideoAspectRatio
{
NoStretching = 0,
Auto = 1,
NTSC = 2,
PAL = 3,
Standard = 4,
Widescreen = 5,
Custom = 6
}
}