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(); } }
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(); } }
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); } }