2017-04-25 16:42:03 +00:00
using System ;
using System.ComponentModel ;
using BizHawk.Common ;
using BizHawk.Emulation.Common ;
namespace BizHawk.Emulation.Cores.Nintendo.GBA
{
public partial class MGBAHawk : ISettable < MGBAHawk . Settings , MGBAHawk . SyncSettings >
{
public Settings GetSettings ( )
{
return _settings . Clone ( ) ;
}
public bool PutSettings ( Settings o )
{
LibmGBA . Layers mask = 0 ;
if ( o . DisplayBG0 ) mask | = LibmGBA . Layers . BG0 ;
if ( o . DisplayBG1 ) mask | = LibmGBA . Layers . BG1 ;
if ( o . DisplayBG2 ) mask | = LibmGBA . Layers . BG2 ;
if ( o . DisplayBG3 ) mask | = LibmGBA . Layers . BG3 ;
if ( o . DisplayOBJ ) mask | = LibmGBA . Layers . OBJ ;
LibmGBA . BizSetLayerMask ( _core , mask ) ;
LibmGBA . Sounds smask = 0 ;
if ( o . PlayCh0 ) smask | = LibmGBA . Sounds . CH0 ;
if ( o . PlayCh1 ) smask | = LibmGBA . Sounds . CH1 ;
if ( o . PlayCh2 ) smask | = LibmGBA . Sounds . CH2 ;
if ( o . PlayCh3 ) smask | = LibmGBA . Sounds . CH3 ;
if ( o . PlayChA ) smask | = LibmGBA . Sounds . CHA ;
if ( o . PlayChB ) smask | = LibmGBA . Sounds . CHB ;
LibmGBA . BizSetSoundMask ( _core , smask ) ;
_settings = o ;
return false ;
}
private Settings _settings ;
public class Settings
{
[DisplayName("Display BG Layer 0")]
[DefaultValue(true)]
public bool DisplayBG0 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Display BG Layer 1")]
[DefaultValue(true)]
public bool DisplayBG1 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Display BG Layer 2")]
[DefaultValue(true)]
public bool DisplayBG2 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Display BG Layer 3")]
[DefaultValue(true)]
public bool DisplayBG3 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Display Sprite Layer")]
[DefaultValue(true)]
public bool DisplayOBJ { get ; set ; }
[DisplayName("Play Square 1")]
[DefaultValue(true)]
public bool PlayCh0 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Play Square 2")]
[DefaultValue(true)]
public bool PlayCh1 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Play Wave")]
[DefaultValue(true)]
public bool PlayCh2 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Play Noise")]
[DefaultValue(true)]
public bool PlayCh3 { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Play Direct Sound A")]
[DefaultValue(true)]
public bool PlayChA { get ; set ; }
2017-04-25 17:00:50 +00:00
2017-04-25 16:42:03 +00:00
[DisplayName("Play Direct Sound B")]
[DefaultValue(true)]
public bool PlayChB { get ; set ; }
public Settings Clone ( )
{
return ( Settings ) MemberwiseClone ( ) ;
}
public Settings ( )
{
SettingsUtil . SetDefaultValues ( this ) ;
}
}
public SyncSettings GetSyncSettings ( )
{
return _syncSettings . Clone ( ) ;
}
public bool PutSyncSettings ( SyncSettings o )
{
bool ret = SyncSettings . NeedsReboot ( o , _syncSettings ) ;
_syncSettings = o ;
return ret ;
}
private SyncSettings _syncSettings ;
public class SyncSettings
{
[DisplayName("Skip BIOS")]
[Description("Skips the BIOS intro. Not applicable when a BIOS is not provided.")]
[DefaultValue(true)]
public bool SkipBios { get ; set ; }
[DisplayName("RTC Use Real Time")]
[Description("Causes the internal clock to reflect your system clock. Only relevant when a game has an RTC chip. Forced to false for movie recording.")]
[DefaultValue(true)]
public bool RTCUseRealTime { get ; set ; }
[DisplayName("RTC Initial Time")]
[Description("The initial time of emulation. Only relevant when a game has an RTC chip and \"RTC Use Real Time\" is false.")]
[DefaultValue(typeof(DateTime), "2010-01-01")]
public DateTime RTCInitialTime { get ; set ; }
public SyncSettings ( )
{
SettingsUtil . SetDefaultValues ( this ) ;
}
public static bool NeedsReboot ( SyncSettings x , SyncSettings y )
{
return ! DeepEquality . DeepEquals ( x , y ) ;
}
public SyncSettings Clone ( )
{
return ( SyncSettings ) MemberwiseClone ( ) ;
}
}
}
}