public void UpdateLabelListAddresses() { bool needUpdate = false; foreach (ListViewItem item in _listItems) { CodeLabel label = (CodeLabel)item.Tag; Int32 relativeAddress = label.GetRelativeAddress(_cpuType).Address; if (relativeAddress != (Int32)item.SubItems[1].Tag) { needUpdate = true; if (relativeAddress >= 0) { item.SubItems[1].Text = "$" + relativeAddress.ToString("X4"); } else { item.SubItems[1].Text = "[n/a]"; } item.SubItems[1].Tag = relativeAddress; } } if (needUpdate) { SortItems(); } }
private void lstLabels_SelectedIndexChanged(object sender, EventArgs e) { mnuDelete.Enabled = lstLabels.SelectedIndices.Count > 0; mnuEdit.Enabled = lstLabels.SelectedIndices.Count == 1; mnuFindOccurrences.Enabled = lstLabels.SelectedIndices.Count == 1; mnuAddToWatch.Enabled = lstLabels.SelectedIndices.Count == 1; mnuAddBreakpoint.Enabled = lstLabels.SelectedIndices.Count == 1; if (lstLabels.SelectedIndices.Count == 1) { CodeLabel label = GetSelectedLabel(); bool availableInCpuMemory = label.GetRelativeAddress(_cpuType).Address >= 0; mnuViewInCpuMemory.Enabled = availableInCpuMemory; bool showViewInMemoryType = label.MemoryType != SnesMemoryType.Register && label.MemoryType != SnesMemoryType.SpcRom && label.MemoryType != SnesMemoryType.SpcRam; if (showViewInMemoryType) { mnuViewInMemoryType.Text = "View in " + ResourceHelper.GetEnumText(label.MemoryType); mnuViewInMemoryType.Visible = true; } else { mnuViewInMemoryType.Visible = false; } } else { mnuViewInCpuMemory.Enabled = false; mnuViewInMemoryType.Visible = false; } }
private void mnuViewInCpuMemory_Click(object sender, EventArgs e) { if (lstLabels.SelectedIndices.Count == 1) { CodeLabel label = GetSelectedLabel(); AddressInfo relAddress = label.GetRelativeAddress(_cpuType); if (relAddress.Address >= 0) { DebugWindowManager.OpenMemoryViewer(relAddress); } } }
private void lstLabels_DoubleClick(object sender, EventArgs e) { if (lstLabels.SelectedIndices.Count > 0) { CodeLabel label = (CodeLabel)GetSelectedLabel(); int relAddress = label.GetRelativeAddress(_cpuType).Address; if (relAddress >= 0) { DebugWindowManager.OpenDebugger(_cpuType).GoToAddress(relAddress); } } }
private void mnuAddBreakpoint_Click(object sender, EventArgs e) { if (lstLabels.SelectedItems.Count > 0) { CodeLabel label = (CodeLabel)lstLabels.SelectedItems[0].SubItems[1].Tag; if (label.AddressType == AddressType.PrgRom) { BreakpointManager.AddBreakpoint(new Breakpoint() { BreakOnExec = true, BreakOnRead = true, BreakOnWrite = false, Address = label.Address, StartAddress = label.Address, EndAddress = label.Address, AddressType = BreakpointAddressType.SingleAddress, IsAbsoluteAddress = true }); } else { int address = label.GetRelativeAddress(); if (address >= 0) { if (BreakpointManager.GetMatchingBreakpoint(address) == null) { BreakpointManager.AddBreakpoint(new Breakpoint() { BreakOnExec = true, BreakOnRead = true, BreakOnWrite = true, Address = (UInt32)address, StartAddress = (UInt32)address, EndAddress = (UInt32)address, AddressType = BreakpointAddressType.SingleAddress, IsAbsoluteAddress = true }); } } } } }