Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
 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);
         }
     }
 }
Exemplo n.º 4
0
 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);
         }
     }
 }
Exemplo n.º 5
0
 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
                     });
                 }
             }
         }
     }
 }