コード例 #1
0
ファイル: ctrlProfiler.cs プロジェクト: piepacker/mesens
 private void lstFunctions_DoubleClick(object sender, EventArgs e)
 {
     if (lstFunctions.SelectedIndices.Count > 0)
     {
         AddressInfo relativeAddress = DebugApi.GetRelativeAddress(_functions[lstFunctions.SelectedIndices[0]].Address, this.CpuType);
         if (relativeAddress.Address >= 0)
         {
             frmDebugger debugger = DebugWindowManager.OpenDebugger(this.CpuType);
             debugger.GoToAddress(relativeAddress.Address);
         }
     }
 }
コード例 #2
0
ファイル: CodeViewerActions.cs プロジェクト: doragasu/Mesen
 private void mnuUndoPrgChrEdit_Click(object sender, EventArgs e)
 {
     if (InteropEmu.DebugHasUndoHistory())
     {
         InteropEmu.DebugPerformUndo();
         frmDebugger debugger = DebugWindowManager.GetDebugger();
         if (debugger != null)
         {
             debugger.UpdateDebugger(false);
         }
     }
 }
コード例 #3
0
        private void mnuViewInDisassembly_Click(object sender, EventArgs e)
        {
            frmDebugger debugger = DebugWindowManager.GetDebugger();

            if (debugger != null)
            {
                if (_memoryType == DebugMemoryType.CpuMemory)
                {
                    debugger.ScrollToAddress(SelectionStartAddress);
                }
                else if (_memoryType == DebugMemoryType.PrgRom || _memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam)
                {
                    int relativeAddress = InteropEmu.DebugGetRelativeAddress((UInt32)SelectionStartAddress, _memoryType.ToAddressType());
                    debugger.ScrollToAddress(relativeAddress);
                }
            }
        }
コード例 #4
0
ファイル: CodeViewerActions.cs プロジェクト: doragasu/Mesen
        private void MarkSelectionAs(CdlPrgFlags type)
        {
            int    startAddress, endAddress;
            string range;

            GetSelectedAddressRange(out startAddress, out endAddress, out range);

            if (startAddress >= 0 && endAddress >= 0 && startAddress <= endAddress)
            {
                InteropEmu.DebugMarkPrgBytesAs((UInt32)startAddress, (UInt32)endAddress, type);

                frmDebugger debugger = DebugWindowManager.GetDebugger();
                if (debugger != null)
                {
                    debugger.UpdateDebugger(false);
                }
            }
        }
コード例 #5
0
        private void MarkSelectionAs(int start, int end, CdlPrgFlags type)
        {
            if (_memoryType == DebugMemoryType.CpuMemory)
            {
                start = InteropEmu.DebugGetAbsoluteAddress((UInt32)start);
                end   = InteropEmu.DebugGetAbsoluteAddress((UInt32)end);
            }

            if (start >= 0 && end >= 0 && start <= end)
            {
                InteropEmu.DebugMarkPrgBytesAs((UInt32)start, (UInt32)end, type);
                frmDebugger debugger = DebugWindowManager.GetDebugger();
                if (debugger != null)
                {
                    debugger.UpdateDebugger(false, false);
                }
            }
        }
コード例 #6
0
        private void UpdateActionAvailability()
        {
            UInt32 startAddress = (UInt32)SelectionStartAddress;
            UInt32 endAddress   = (UInt32)SelectionEndAddress;

            string address = "$" + startAddress.ToString("X4");
            string addressRange;

            if (startAddress != endAddress)
            {
                addressRange = "$" + startAddress.ToString("X4") + "-$" + endAddress.ToString("X4");
            }
            else
            {
                addressRange = address;
            }

            mnuEditLabel.Text      = $"Edit Label ({address})";
            mnuEditBreakpoint.Text = $"Edit Breakpoint ({addressRange})";
            mnuAddToWatch.Text     = $"Add to Watch ({addressRange})";

            mnuViewInDisassembly.Text = $"View in disassembly ({address})";

            bool viewInCpuMemoryVisible  = (_memoryType == DebugMemoryType.PrgRom || _memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam);
            bool viewInMemoryTypeVisible = _memoryType == DebugMemoryType.CpuMemory;

            mnuViewInCpuMemory.Visible   = viewInCpuMemoryVisible;
            mnuViewInMemoryType.Visible  = viewInMemoryTypeVisible;
            mnuViewInDisassembly.Visible = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);
            sepViewActions.Visible       = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);

            if (viewInMemoryTypeVisible)
            {
                frmDebugger     debugger    = DebugWindowManager.GetDebugger();
                AddressTypeInfo addressInfo = new AddressTypeInfo();
                InteropEmu.DebugGetAbsoluteAddressAndType(startAddress, addressInfo);
                mnuViewInMemoryType.Text     = $"View in " + ResourceHelper.GetEnumText(addressInfo.Type) + $" ({address})";
                mnuViewInDisassembly.Enabled = debugger != null;
                bool viewInMemoryTypeEnabled = addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam);
                mnuViewInMemoryType.Enabled = viewInMemoryTypeEnabled;
                mnuViewInMemoryType.Visible = viewInMemoryTypeEnabled;
                mnuViewInCpuMemory.Enabled  = false;
            }
            else if (viewInCpuMemoryVisible)
            {
                frmDebugger debugger        = DebugWindowManager.GetDebugger();
                int         relativeAddress = InteropEmu.DebugGetRelativeAddress(startAddress, _memoryType.ToAddressType());
                mnuViewInCpuMemory.Text      = $"View in CPU memory ({address})";
                mnuViewInCpuMemory.Enabled   = relativeAddress >= 0;
                mnuViewInDisassembly.Enabled = debugger != null && relativeAddress >= 0;
                mnuViewInMemoryType.Enabled  = false;
            }
            else
            {
                mnuViewInMemoryType.Enabled  = false;
                mnuViewInCpuMemory.Enabled   = false;
                mnuViewInDisassembly.Enabled = false;
            }

            if (this._memoryType == DebugMemoryType.CpuMemory)
            {
                bool[] freezeState = InteropEmu.DebugGetFreezeState((UInt16)startAddress, (UInt16)(endAddress - startAddress + 1));
                mnuFreeze.Enabled   = !freezeState.All((frozen) => frozen);
                mnuUnfreeze.Enabled = freezeState.Any((frozen) => frozen);
                mnuFreeze.Text      = $"Freeze ({addressRange})";
                mnuUnfreeze.Text    = $"Unfreeze ({addressRange})";
            }
            else
            {
                mnuFreeze.Text      = $"Freeze";
                mnuUnfreeze.Text    = $"Unfreeze";
                mnuFreeze.Enabled   = false;
                mnuUnfreeze.Enabled = false;
            }

            if (this._memoryType == DebugMemoryType.CpuMemory)
            {
                int absStart = InteropEmu.DebugGetAbsoluteAddress(startAddress);
                int absEnd   = InteropEmu.DebugGetAbsoluteAddress(endAddress);

                if (absStart >= 0 && absEnd >= 0 && absStart <= absEnd)
                {
                    mnuMarkSelectionAs.Text    = "Mark selection as... (" + addressRange + ")";
                    mnuMarkSelectionAs.Enabled = true;
                }
                else
                {
                    mnuMarkSelectionAs.Text    = "Mark selection as...";
                    mnuMarkSelectionAs.Enabled = false;
                }
            }
            else if (this._memoryType == DebugMemoryType.PrgRom)
            {
                mnuMarkSelectionAs.Text    = "Mark selection as... (" + addressRange + ")";
                mnuMarkSelectionAs.Enabled = true;
            }
            else
            {
                mnuMarkSelectionAs.Text    = "Mark selection as...";
                mnuMarkSelectionAs.Enabled = false;
            }

            bool disableEditLabel = false;

            if (this._memoryType == DebugMemoryType.CpuMemory)
            {
                AddressTypeInfo info = new AddressTypeInfo();
                InteropEmu.DebugGetAbsoluteAddressAndType(startAddress, info);
                disableEditLabel = info.Address == -1;
            }

            mnuEditLabel.Enabled      = !disableEditLabel && (this._memoryType == DebugMemoryType.CpuMemory || this.GetAddressType().HasValue);
            mnuEditBreakpoint.Enabled = DebugWindowManager.GetDebugger() != null && (
                this._memoryType == DebugMemoryType.CpuMemory ||
                this._memoryType == DebugMemoryType.PpuMemory ||
                this._memoryType == DebugMemoryType.PrgRom ||
                this._memoryType == DebugMemoryType.WorkRam ||
                this._memoryType == DebugMemoryType.SaveRam ||
                this._memoryType == DebugMemoryType.ChrRam ||
                this._memoryType == DebugMemoryType.ChrRom ||
                this._memoryType == DebugMemoryType.PaletteMemory
                );

            mnuAddToWatch.Enabled = this._memoryType == DebugMemoryType.CpuMemory;

            mnuCopy.Enabled      = ctrlHexBox.CanCopy();
            mnuPaste.Enabled     = ctrlHexBox.CanPaste();
            mnuSelectAll.Enabled = ctrlHexBox.CanSelectAll();
            mnuUndo.Enabled      = InteropEmu.DebugHasUndoHistory();
        }