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);
        }
Ejemplo n.º 2
0
        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);
            }
        }