124 lines
3.1 KiB
C#
124 lines
3.1 KiB
C#
using System.ComponentModel;
|
|
using BizHawk.Emulation.Common;
|
|
|
|
namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
|
{
|
|
public partial class SMS : ISettable<SMS.SmsSettings, SMS.SmsSyncSettings>
|
|
{
|
|
public SmsSettings GetSettings() => Settings.Clone();
|
|
|
|
public SmsSyncSettings GetSyncSettings() => SyncSettings.Clone();
|
|
|
|
public bool PutSettings(SmsSettings o)
|
|
{
|
|
bool ret = SmsSettings.RebootNeeded(Settings, o);
|
|
Settings = o;
|
|
return ret;
|
|
}
|
|
|
|
public bool PutSyncSettings(SmsSyncSettings o)
|
|
{
|
|
bool ret = SmsSyncSettings.RebootNeeded(SyncSettings, o);
|
|
SyncSettings = o;
|
|
return ret;
|
|
}
|
|
|
|
internal SmsSettings Settings { get; private set; }
|
|
internal SmsSyncSettings SyncSettings { get; private set; }
|
|
|
|
public class SmsSettings
|
|
{
|
|
// Game settings
|
|
public bool ForceStereoSeparation { get; set; }
|
|
public bool SpriteLimit { get; set; }
|
|
|
|
[DisplayName("Fix 3D")]
|
|
[Description("SMS only")]
|
|
public bool Fix3D { get; set; } = true;
|
|
|
|
[DisplayName("Display Overscan")]
|
|
[Description("Not applicable to Game Gear")]
|
|
public bool DisplayOverscan { get; set; }
|
|
|
|
[DisplayName("Show Clipped Regions")]
|
|
[Description("Game Gear only")]
|
|
public bool ShowClippedRegions { get; set; }
|
|
|
|
[DisplayName("Highlight Active Display Region")]
|
|
[Description("Game Gear only")]
|
|
public bool HighlightActiveDisplayRegion { get; set; }
|
|
|
|
// graphics settings
|
|
[DisplayName("Display Background")]
|
|
public bool DispBG { get; set; } = true;
|
|
|
|
[DisplayName("Display Objects")]
|
|
public bool DispOBJ { get; set; } = true;
|
|
|
|
public SmsSettings Clone() => (SmsSettings)MemberwiseClone();
|
|
|
|
public static bool RebootNeeded(SmsSettings x, SmsSettings y) => false;
|
|
}
|
|
|
|
public class SmsSyncSettings
|
|
{
|
|
[DisplayName("Enable FM")]
|
|
[Description("SMS only")]
|
|
public bool EnableFm { get; set; } = true;
|
|
|
|
[DisplayName("Allow Overclock")]
|
|
[Description("SMS only")]
|
|
public bool AllowOverClock { get; set; }
|
|
|
|
[DisplayName("Use BIOS")]
|
|
[Description("Must be Enabled for TAS")]
|
|
public bool UseBios { get; set; } = true;
|
|
|
|
[DisplayName("Region")]
|
|
public Regions ConsoleRegion { get; set; } = Regions.Auto;
|
|
|
|
[DisplayName("Display Type")]
|
|
public DisplayTypes DisplayType { get; set; } = DisplayTypes.Auto;
|
|
|
|
[DisplayName("Controller Type")]
|
|
[Description("Currently controllers can not be configured separately")]
|
|
public ControllerTypes ControllerType { get; set; } = ControllerTypes.Standard;
|
|
|
|
public SmsSyncSettings Clone() => (SmsSyncSettings)MemberwiseClone();
|
|
|
|
public static bool RebootNeeded(SmsSyncSettings x, SmsSyncSettings y)
|
|
{
|
|
return
|
|
x.EnableFm != y.EnableFm
|
|
|| x.AllowOverClock != y.AllowOverClock
|
|
|| x.UseBios != y.UseBios
|
|
|| x.ConsoleRegion != y.ConsoleRegion
|
|
|| x.DisplayType != y.DisplayType
|
|
|| x.ControllerType != y.ControllerType;
|
|
}
|
|
|
|
public enum ControllerTypes
|
|
{
|
|
Standard,
|
|
Paddle,
|
|
LightPhaser,
|
|
SportsPad,
|
|
Keyboard
|
|
}
|
|
|
|
public enum Regions
|
|
{
|
|
Export,
|
|
Japan,
|
|
Korea,
|
|
Auto
|
|
}
|
|
|
|
public enum DisplayTypes
|
|
{
|
|
Ntsc, Pal, Auto
|
|
}
|
|
}
|
|
}
|
|
}
|