public MelonSyncSettings GetSyncSettings()
        {
            var ret = new MelonSyncSettings();

            fixed(byte *ptr = ret.UserSettings)
            {
                if (!GetUserSettings(ptr))
                {
                    return(null);
                }
            }

            ret.BootToFirmware = !GetDirectBoot();
            ret.TimeAtBoot     = GetTimeAtBoot();
            return(ret);
        }
Exemple #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);
            }
        }
        public PutSettingsDirtyBits PutSyncSettings(MelonSyncSettings o)
        {
            if (o == null)
            {
                o = new MelonSyncSettings();
                SetUserSettings(null);
            }
            else
            {
                fixed(byte *ptr = o.UserSettings)
                SetUserSettings(ptr);
            }

            SetDirectBoot(!o.BootToFirmware);
            SetTimeAtBoot(o.TimeAtBoot);

            // At present, no sync settings can be modified without requiring a reboot.
            return(PutSettingsDirtyBits.RebootCore);
        }