private void SeekCallback()
        {
            BreakpointCallback();

            var seekBreakpoint = Breakpoints.FirstOrDefault(x => x.Name.StartsWith(SeekName));

            if (seekBreakpoint != null)
            {
                Breakpoints.Remove(seekBreakpoint);
                UpdateValues();
            }

            ParentDebugger.DisableCancelSeekBtn();
        }
        public void GenerateUI()
        {
            if (MCS != null)
            {
                foreach (var callback in MCS)
                {
                    Breakpoints.Add(new Breakpoint(Core, callback));
                }

                BreakpointView.ItemCount = Breakpoints.Count;
                BreakpointView.Refresh();
                UpdateBreakpointRemoveButton();
                UpdateStatsLabel();
            }
            else
            {
                this.Enabled = false;
                ParentDebugger.DisableBreakpointBox();
            }
        }
Пример #3
0
        public void GenerateUI()
        {
            if (Mcs != null)
            {
                foreach (var callback in Mcs)
                {
                    _breakpoints.Add(new Breakpoint(Core, callback));
                }

                BreakpointView.VirtualListSize = _breakpoints.Count;
                BreakpointView.Refresh();
                UpdateBreakpointRemoveButton();
                UpdateStatsLabel();
            }
            else
            {
                Enabled = false;
                ParentDebugger.DisableBreakpointBox();
            }
        }
Пример #4
0
        public void GenerateUI()
        {
            this.Controls.Clear();
            var canget = CanGetCpuRegisters;
            var canset = CanSetCpuRegisters;

            if (!canget && !canset)
            {
                ParentDebugger.DisableRegisterBox();
                this.Enabled = false;
            }

            var registers = Core.GetCpuFlagsAndRegisters();

            int y = UIHelper.ScaleY(0);

            var maxCharSize = registers.Where(r => r.Value.BitSize != 1).Max(r => r.Key.Length);
            var width       = maxCharSize * 5;

            if (width < 20)
            {
                width = 20;
            }

            foreach (var register in registers.Where(r => r.Value.BitSize != 1))
            {
                this.Controls.Add(new Label
                {
                    Text     = register.Key,
                    Location = new Point(UIHelper.ScaleX(5), y + UIHelper.ScaleY(2)),
                    Size     = new Size(UIHelper.ScaleX(width + 5), UIHelper.ScaleY(15))
                });

                if (canset)
                {
                    var t = new TextBox
                    {
                        Name            = register.Key,
                        Text            = register.Value.Value.ToHexString(register.Value.BitSize / 16),
                        Width           = UIHelper.ScaleX(6 + ((register.Value.BitSize / 4) * 9)),
                        Location        = new Point(UIHelper.ScaleX(width + 10), y),
                        MaxLength       = register.Value.BitSize / 4,
                        CharacterCasing = CharacterCasing.Upper
                    };

                    t.TextChanged += (o, e) =>
                    {
                        if (!_supressChangeEvents)
                        {
                            try
                            {
                                Core.SetCpuRegister(t.Name, int.Parse(t.Text));
                            }
                            catch (InvalidOperationException)
                            {
                                t.Enabled = false;
                            }
                        }
                    };

                    this.Controls.Add(t);
                }
                else
                {
                    this.Controls.Add(new Label
                    {
                        Name     = register.Key,
                        Text     = register.Value.Value.ToString(),
                        Size     = new Size(UIHelper.ScaleX(6 + ((register.Value.BitSize / 4) * 9)), UIHelper.ScaleY(15)),
                        Location = new Point(UIHelper.ScaleX(width + 12), y + 2)
                    });
                }

                y += UIHelper.ScaleY(25);
            }

            var flags = registers.Where(r => r.Value.BitSize == 1);

            if (flags.Any())
            {
                var p = new Panel
                {
                    Name        = "FlagPanel",
                    Location    = new Point(UIHelper.ScaleX(5), y),
                    BorderStyle = BorderStyle.None,
                    Size        = new Size(UIHelper.ScaleX(240), UIHelper.ScaleY(23)),
                    AutoScroll  = true
                };

                foreach (var flag in registers.Where(r => r.Value.BitSize == 1).OrderByDescending(x => x.Key))
                {
                    var c = new CheckBox
                    {
                        Appearance = System.Windows.Forms.Appearance.Button,
                        Name       = flag.Key,
                        Text       = flag.Key.Replace("Flag", "").Trim(),                   // Hack
                        Checked    = flag.Value.Value == 1 ? true : false,
                        Location   = new Point(UIHelper.ScaleX(40), y),
                        Dock       = DockStyle.Left,
                        Size       = new Size(UIHelper.ScaleX(23), UIHelper.ScaleY(23)),
                        Enabled    = canset
                    };

                    c.CheckedChanged += (o, e) =>
                    {
                        if (!_supressChangeEvents)
                        {
                            try
                            {
                                Core.SetCpuRegister(c.Name, c.Checked ? 1 : 0);
                            }
                            catch (InvalidOperationException)                             // TODO: This is hacky stuff because NES doesn't support setting flags!  Need to know when a core supports this or not, and enable/disable the box accordingly
                            {
                                _supressChangeEvents = true;
                                c.Checked            = !c.Checked;
                                _supressChangeEvents = false;
                                c.Enabled            = false;
                            }
                        }
                    };

                    p.Controls.Add(c);
                }

                this.Controls.Add(p);
            }
        }