public PutSettingsDirtyBits PutSettings(MelonSettings o) { bool screenChanged = false; if (o != null) { screenChanged |= _settings.ScaleFactor != o.ScaleFactor; screenChanged |= _settings.ScreenGap != o.ScreenGap; screenChanged |= _settings.ScreenLayout != o.ScreenLayout; screenChanged |= _settings.ScreenRotation != o.ScreenRotation; } _settings = o ?? new MelonSettings(); SetScaleFactor(_settings.ScaleFactor); return(screenChanged ? PutSettingsDirtyBits.None : PutSettingsDirtyBits.None); }
public MelonDS(byte[] file, CoreComm comm, MelonSettings settings, MelonSyncSettings syncSettings) { _serviceProvider = new BasicServiceProvider(this); ControllerDefinition = new ControllerDefinition { Name = "NDS Controller" }; ControllerDefinition.BoolButtons.Add("Left"); ControllerDefinition.BoolButtons.Add("Right"); ControllerDefinition.BoolButtons.Add("Up"); ControllerDefinition.BoolButtons.Add("Down"); ControllerDefinition.BoolButtons.Add("A"); ControllerDefinition.BoolButtons.Add("B"); ControllerDefinition.BoolButtons.Add("X"); ControllerDefinition.BoolButtons.Add("Y"); ControllerDefinition.BoolButtons.Add("L"); ControllerDefinition.BoolButtons.Add("R"); ControllerDefinition.BoolButtons.Add("Start"); ControllerDefinition.BoolButtons.Add("Select"); ControllerDefinition.BoolButtons.Add("LidOpen"); ControllerDefinition.BoolButtons.Add("LidClose"); ControllerDefinition.BoolButtons.Add("Power"); ControllerDefinition.BoolButtons.Add("Touch"); ControllerDefinition.AddXYPair("Touch{0}", AxisPairOrientation.RightAndUp, 0.RangeTo(255), 128, 0.RangeTo(191), 96); //TODO verify direction against hardware CoreComm = comm; _resampler = new SpeexResampler(SpeexResampler.Quality.QUALITY_DEFAULT, 32768, 44100, 32768, 44100); SetUpFiles(); PutSettings(settings as MelonSettings); PutSyncSettings(syncSettings as MelonSyncSettings); if (!Init()) { throw new Exception("Failed to init NDS."); } InitMemoryDomains(); fixed(byte *f = file) { LoadROM(f, file.Length); } }