Example #1
0
        private void InitSyncSettingsInfo(List <NPortInfoT> allPorts)
        {
            var s = new NymaSettingsInfo();

            foreach (var portInfo in allPorts)
            {
                s.Ports.Add(new NymaSettingsInfo.Port
                {
                    Name = portInfo.FullName,
                    DefaultSettingsValue = portInfo.DefaultDeviceShortName,
                    AllowedDevices       = portInfo.Devices.Select(dev => new NymaSettingsInfo.Device
                    {
                        Name         = dev.FullName,
                        Description  = dev.Description,
                        SettingValue = dev.ShortName
                    }).ToList()
                });
            }

            foreach (var setting in GetSettingsData())
            {
                s.Settings.Add(setting);
                s.SettingsByKey.Add(setting.SettingsKey, setting);
            }
            s.HiddenSettings = new HashSet <string>(SettingsOverrides.Keys);
            foreach (var ss in ExtraSettings)
            {
                s.Settings.Add(ss);
                s.SettingsByKey.Add(ss.SettingsKey, ss);
            }
            SettingsInfo = s;
        }
Example #2
0
            /// <summary>
            /// remove things that aren't used by the core
            /// Normally won't do anything, but can be useful in case settings change
            /// </summary>
            public void Normalize(NymaSettingsInfo info)
            {
                var toRemove = new List <string>();

                foreach (var kvp in MednafenValues)
                {
                    if (!info.AllSettingsByKey.ContainsKey(kvp.Key))
                    {
                        toRemove.Add(kvp.Key);
                    }
                    else
                    {
                        var ovr = info.AllOverrides[kvp.Key];
                        if (ovr.Hide || !ovr.NonSync)
                        {
                            toRemove.Add(kvp.Key);
                        }
                    }
                }
                foreach (var key in toRemove)
                {
                    MednafenValues.Remove(key);
                }
                DisabledLayers = new HashSet <string>(DisabledLayers.Where(l => info.LayerNames.Contains(l)));
            }
Example #3
0
        private void InitAllSettingsInfo(List <NPortInfoT> allPorts)
        {
            var s = new NymaSettingsInfo();

            foreach (var portInfo in allPorts)
            {
                s.Ports.Add(new NymaSettingsInfo.Port
                {
                    Name = portInfo.FullName,
                    DefaultSettingsValue = portInfo.DefaultDeviceShortName,
                    AllowedDevices       = portInfo.Devices.Select(dev => new NymaSettingsInfo.Device
                    {
                        Name         = dev.FullName,
                        Description  = dev.Description,
                        SettingValue = dev.ShortName
                    }).ToList()
                });
            }

            foreach (var kvp in ExtraOverrides.Concat(SettingOverrides))
            {
                s.AllOverrides[kvp.Key] = kvp.Value;
            }
            foreach (var setting in GetSettingsData().Concat(ExtraSettings))
            {
                s.AllSettingsByKey.Add(setting.SettingsKey, setting);
                s.AllSettings.Add(setting);
                if (!s.AllOverrides.ContainsKey(setting.SettingsKey))
                {
                    s.AllOverrides.Add(setting.SettingsKey, new SettingOverride());
                }
            }
            SettingsInfo = s;
        }
Example #4
0
        public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm)
        {
            if (_cachedSettingsInfo is null)
            {
                using var n = new NeoGeoPort(comm);
                n.InitForSettingsInfo("ngp.wbx");
                _cachedSettingsInfo = n.SettingsInfo.Clone();
            }

            return(_cachedSettingsInfo);
        }
Example #5
0
        public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm)
        {
            if (_cachedSettingsInfo is null)
            {
                using var n = new HyperNyma(comm);
                n.InitForSettingsInfo("hyper.wbx");
                _cachedSettingsInfo = n.SettingsInfo.Clone();
            }

            return(_cachedSettingsInfo);
        }
Example #6
0
        public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm)
        {
            if (_cachedSettingsInfo is null)
            {
                using var n = new VirtualBoyee(comm);
                n.InitForSettingsInfo("vb.wbx");
                _cachedSettingsInfo = n.SettingsInfo.Clone();
            }

            return(_cachedSettingsInfo);
        }
Example #7
0
            /// <summary>
            /// remove things that aren't used by the core
            /// Normally won't do anything, but can be useful in case settings change
            /// </summary>
            public void Normalize(NymaSettingsInfo info)
            {
                var toRemove = new List <string>();

                foreach (var kvp in MednafenValues)
                {
                    if (!info.AllSettingsByKey.ContainsKey(kvp.Key))
                    {
                        toRemove.Add(kvp.Key);
                    }
                    else
                    {
                        var ovr = info.AllOverrides[kvp.Key];
                        if (ovr.Hide || ovr.NonSync)
                        {
                            toRemove.Add(kvp.Key);
                        }
                    }
                }
                foreach (var key in toRemove)
                {
                    MednafenValues.Remove(key);
                }
                var toRemovePort = new List <int>();

                foreach (var kvp in PortDevices)
                {
                    if (info.Ports.Count <= kvp.Key || info.Ports[kvp.Key].DefaultSettingsValue == kvp.Value)
                    {
                        toRemovePort.Add(kvp.Key);
                    }
                }
                foreach (var key in toRemovePort)
                {
                    PortDevices.Remove(key);
                }
            }
        private void InitSyncSettingsInfo(List <NPortInfoT> allPorts)
        {
            var s = new NymaSettingsInfo();

            foreach (var portInfo in allPorts)
            {
                s.Ports.Add(new NymaSettingsInfo.Port
                {
                    Name = portInfo.FullName,
                    DefaultSettingsValue = portInfo.DefaultDeviceShortName,
                    AllowedDevices       = portInfo.Devices.Select(dev => new NymaSettingsInfo.Device
                    {
                        Name         = dev.FullName,
                        Description  = dev.Description,
                        SettingValue = dev.ShortName
                    }).ToList()
                });
            }

            foreach (var setting in GetSettingsData().Concat(ExtraSettings))
            {
                s.AllSettingsByKey.Add(setting.SettingsKey, setting);
                if (!SettingsOverrides.ContainsKey(setting.SettingsKey))
                {
                    if (NonSyncSettingNames.Contains(setting.SettingsKey))
                    {
                        s.Settings.Add(setting);
                    }
                    else
                    {
                        s.SyncSettings.Add(setting);
                    }
                }
            }
            SettingsInfo = s;
        }
Example #9
0
            public static PutSettingsDirtyBits Reboot(NymaSyncSettings x, NymaSyncSettings y, NymaSettingsInfo info)
            {
                var restarters = info.AllOverrides.Where(kvp => !kvp.Value.NonSync && !kvp.Value.NoRestart).Select(kvp => kvp.Key);

                foreach (var key in restarters)
                {
                    x.MednafenValues.TryGetValue(key, out var xx);
                    y.MednafenValues.TryGetValue(key, out var yy);
                    if (xx != yy)
                    {
                        return(PutSettingsDirtyBits.RebootCore);
                    }
                }
                if (!new HashSet <KeyValuePair <int, string> >(x.PortDevices).SetEquals(y.PortDevices))
                {
                    return(PutSettingsDirtyBits.RebootCore);
                }
                return(PutSettingsDirtyBits.None);
            }
Example #10
0
            public static PutSettingsDirtyBits Reboot(NymaSettings x, NymaSettings y, NymaSettingsInfo info)
            {
                var restarters = info.AllOverrides.Where(kvp => kvp.Value.NonSync && !kvp.Value.NoRestart).Select(kvp => kvp.Key);

                foreach (var key in restarters)
                {
                    x.MednafenValues.TryGetValue(key, out var xx);
                    y.MednafenValues.TryGetValue(key, out var yy);
                    if (xx != yy)
                    {
                        return(PutSettingsDirtyBits.RebootCore);
                    }
                }
                return(PutSettingsDirtyBits.None);
            }
Example #11
0
            public static IEnumerable <string> ChangedKeys(NymaSettings x, NymaSettings y, NymaSettingsInfo info)
            {
                var possible = info.AllOverrides.Where(kvp => kvp.Value.NonSync && kvp.Value.NoRestart).Select(kvp => kvp.Key);

                return(possible.Where(key =>
                {
                    x.MednafenValues.TryGetValue(key, out var xx);
                    y.MednafenValues.TryGetValue(key, out var yy);
                    return xx != yy;
                }));
            }
Example #12
0
        private void InitSyncSettingsInfo()
        {
            // TODO: Some shared logic in ControllerAdapter.  Avoidable?
            var s = new NymaSettingsInfo();

            var numPorts = _nyma.GetNumPorts();

            for (uint port = 0; port < numPorts; port++)
            {
                var portInfo = *_nyma.GetPort(port);

                s.Ports.Add(new NymaSettingsInfo.Port
                {
                    Name = portInfo.FullName,
                    DefaultSettingsValue = portInfo.DefaultDeviceShortName,
                    AllowedDevices       = Enumerable.Range(0, (int)portInfo.NumDevices)
                                           .Select(i =>
                    {
                        var dev = *_nyma.GetDevice(port, (uint)i);
                        return(new NymaSettingsInfo.Device
                        {
                            Name = dev.FullName,
                            Description = dev.Description,
                            SettingValue = dev.ShortName
                        });
                    })
                                           .ToList()
                });
            }

            for (var i = 0;; i++)
            {
                var tt = new NymaSettingsInfo.MednaSettingS();
                _nyma.IterateSettings(i, tt);
                if (tt.SettingsKey == IntPtr.Zero)
                {
                    break;
                }
                var ss = new NymaSettingsInfo.MednaSetting(tt);
                s.Settings.Add(ss);
                s.SettingsByKey.Add(ss.SettingsKey, ss);
                if (ss.Type == NymaSettingsInfo.MednaSetting.SettingType.ENUM)
                {
                    var l = ss.SettingEnums;
                    for (var j = 0;; j++)
                    {
                        var ff = new NymaSettingsInfo.MednaSettingS.EnumValueS();
                        _nyma.IterateSettingEnums(i, j, ff);
                        if (ff.Value == IntPtr.Zero)
                        {
                            break;
                        }
                        var ee = new NymaSettingsInfo.MednaSetting.EnumValue(ff);
                        l.Add(ee);
                    }
                }
            }

            s.HiddenSettings = new HashSet <string>(SettingsOverrides.Keys);
            foreach (var ss in ExtraSettings)
            {
                s.Settings.Add(ss);
                s.SettingsByKey.Add(ss.SettingsKey, ss);
            }
            SettingsInfo = s;
        }
Example #13
0
 public SettingsCustomTypeDescriptor(NymaSettingsInfo info)
 {
     SettingsInfo = info;
 }
Example #14
0
 public NymaTypeDescriptorProvider(NymaSettingsInfo info)
 {
     SettingsInfo = info;
 }