private void mnuEditInMemoryViewer_Click(object sender, EventArgs e) { if (UpdateContextMenu(_lastLocation)) { DebugWindowManager.OpenMemoryViewer(GetDestination()); } }
public void GoToDestination(GoToDestination dest) { bool bringToFront = true; if (dest.RelativeAddress?.Type == _manager.CpuType.ToMemoryType()) { ScrollToAddress((uint)dest.RelativeAddress.Value.Address); } else if (dest.RelativeAddress != null) { DebugWindowManager.OpenDebugger(dest.RelativeAddress.Value.Type.ToCpuType())?.GoToAddress(dest.RelativeAddress.Value.Address); bringToFront = false; } else if (dest.SourceLocation != null) { ScrollToSourceLocation(dest.SourceLocation); } else if (dest.File != null) { SelectFile(dest.File); } if (bringToFront) { Form parent = this.ParentForm; if (parent.WindowState == FormWindowState.Minimized) { //Unminimize window if it was minimized parent.WindowState = FormWindowState.Normal; } parent.BringToFront(); } }
private void MarkSelectionAs(CdlFlags type) { if (_memoryType != SnesMemoryType.CpuMemory && _memoryType != SnesMemoryType.PrgRom && _memoryType != SnesMemoryType.GameboyMemory && _memoryType != SnesMemoryType.GbPrgRom) { return; } int start = SelectionStartAddress; int end = SelectionEndAddress; if (_memoryType == SnesMemoryType.CpuMemory || _memoryType == SnesMemoryType.GameboyMemory) { start = DebugApi.GetAbsoluteAddress(new AddressInfo() { Address = start, Type = _memoryType }).Address; end = DebugApi.GetAbsoluteAddress(new AddressInfo() { Address = end, Type = _memoryType }).Address; } if (start >= 0 && end >= 0 && start <= end) { DebugApi.MarkBytesAs((UInt32)start, (UInt32)end, type); DebugWindowManager.GetDebugger(_memoryType.ToCpuType())?.RefreshDisassembly(); } RefreshData(_memoryType); }
private void mnuDebugDualSystemSecondaryCpu_Click(object sender, EventArgs e) { bool switchCpu = false; if (!DebugWindowManager.HasOpenedWindow) { switchCpu = true; } else { if (MessageBox.Show("Warning: Changing this setting will close all currently opened debug tools!", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { DebugWindowManager.CloseAll(); if (!DebugWindowManager.HasOpenedWindow) { switchCpu = true; } } } if (switchCpu) { mnuDebugDualSystemSecondaryCpu.Checked = !mnuDebugDualSystemSecondaryCpu.Checked; ConfigManager.Config.DebugInfo.DebugConsoleId = mnuDebugDualSystemSecondaryCpu.Checked ? InteropEmu.ConsoleId.Slave : InteropEmu.ConsoleId.Master; ConfigManager.ApplyChanges(); InteropEmu.DebugSetDebuggerConsole(ConfigManager.Config.DebugInfo.DebugConsoleId); } }
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e) { if (UpdateContextMenu(_lastLocation)) { DebugWindowManager.OpenMemoryViewer(_lastClickedAddress, false); } }
private void EditInMemoryTools(LocationInfo location) { if (location.Symbol != null) { AddressInfo?address = _symbolProvider.GetSymbolAddressInfo(location.Symbol); if (address.HasValue) { DebugWindowManager.OpenMemoryViewer(address.Value); } } else if (location.Address >= 0) { AddressInfo relAddress = new AddressInfo() { Address = location.Address, Type = _manager.RelativeMemoryType }; DebugWindowManager.OpenMemoryViewer(relAddress); } else if (location.Label != null) { DebugWindowManager.OpenMemoryViewer(location.Label.GetAbsoluteAddress()); } }
private void mnuAddBreakpoint_Click(object sender, EventArgs e) { if (DebugWindowManager.GetDebugger() == null) { return; } AddBreakpoint(_tileInfo.PpuAddress); }
private void ctxMenu_Opening(object sender, CancelEventArgs e) { mnuAddBreakpoint.Text = "Add breakpoint ($" + _currentPpuAddress.ToString("X4") + ")"; mnuEditInMemoryViewer.Text = "Edit in Memory Viewer ($" + _currentPpuAddress.ToString("X4") + ")"; mnuAddBreakpoint.Enabled = DebugWindowManager.GetDebugger() != null; mnuCopyNametableHdPack.Visible = Control.ModifierKeys == Keys.Shift; _copyData = ToHdPackFormat(_nametableIndex, _tileY * 32 + _tileX); }
private void MarkSelectionAs(CdlFlags type) { SelectedAddressRange range = GetSelectedAddressRange(); if (!_inSourceView && range != null && range.Start.Type == _manager.PrgMemoryType && range.End.Type == _manager.PrgMemoryType) { DebugApi.MarkBytesAs((UInt32)range.Start.Address, (UInt32)range.End.Address, type); DebugWindowManager.OpenDebugger(_manager.CpuType)?.RefreshDisassembly(); } }
private void EditSelectedCode() { SelectedAddressRange range = GetSelectedRelativeAddressRange(); if (range.Start.Address >= 0 && range.End.Address >= 0 && range.Start.Address <= range.End.Address) { int length = range.End.Address - range.Start.Address + 1; DebugWindowManager.OpenAssembler(_manager.CpuType, GetSelectedCode(), range.Start.Address, length); } }
private void mnuViewInMemoryType_Click(object sender, EventArgs e) { if (lstLabels.SelectedIndices.Count == 1) { CodeLabel label = GetSelectedLabel(); if (label.MemoryType != SnesMemoryType.Register) { DebugWindowManager.OpenMemoryViewer(label.GetAbsoluteAddress()); } } }
private void OnNotificationReceived(NotificationEventArgs e) { switch (e.NotificationType) { case ConsoleNotificationType.GameLoaded: this.BeginInvoke((Action)(() => { UpdateDebuggerMenu(); ctrlRecentGames.Visible = false; SaveStateManager.UpdateStateMenu(mnuLoadState, false); SaveStateManager.UpdateStateMenu(mnuSaveState, true); RomInfo romInfo = EmuApi.GetRomInfo(); this.Text = "Mesen-S - " + romInfo.GetRomName(); if (DebugWindowManager.HasOpenedWindow) { DebugWorkspaceManager.GetWorkspace(); } })); break; case ConsoleNotificationType.BeforeEmulationStop: this.Invoke((Action)(() => { DebugWindowManager.CloseAll(); })); break; case ConsoleNotificationType.EmulationStopped: this.BeginInvoke((Action)(() => { this.Text = "Mesen-S"; UpdateDebuggerMenu(); ctrlRecentGames.Initialize(); ctrlRecentGames.Visible = true; ResizeRecentGames(); if (_displayManager.ExclusiveFullscreen) { _displayManager.SetFullscreenState(false); } })); break; case ConsoleNotificationType.ResolutionChanged: this.BeginInvoke((Action)(() => { _displayManager.UpdateViewerSize(); })); break; case ConsoleNotificationType.ExecuteShortcut: this.BeginInvoke((Action)(() => { _shortcuts.ExecuteShortcut((EmulatorShortcut)e.Parameter); })); break; } }
public static void ShowWindow() { if (_instance != null) { DebugWindowManager.BringToFront(_instance); } frmCheatList frm = new frmCheatList(); _instance = frm; frm.Closed += (s, e) => { _instance = null; }; frm.Show(null, frmMain.Instance); }
private void mnuViewInMemoryType_Click(object sender, EventArgs e) { if (lstLabels.SelectedIndices.Count == 1) { ListViewItem item = GetSelectedItem(); CodeLabel label = (CodeLabel)item.SubItems[1].Tag; if (label.AddressType != AddressType.Register && label.AddressType != AddressType.InternalRam) { DebugWindowManager.OpenMemoryViewer((int)label.Address, label.AddressType.ToMemoryType()); } } }
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 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); } } }
private void mnuViewInCpuMemory_Click(object sender, EventArgs e) { if (lstLabels.SelectedIndices.Count == 1) { ListViewItem item = GetSelectedItem(); int address = (int)item.Tag; if (address >= 0) { DebugWindowManager.OpenMemoryViewer(address, DebugMemoryType.CpuMemory); } } }
private void mnuUndoPrgChrEdit_Click(object sender, EventArgs e) { if (InteropEmu.DebugHasUndoHistory()) { InteropEmu.DebugPerformUndo(); frmDebugger debugger = DebugWindowManager.GetDebugger(); if (debugger != null) { debugger.UpdateDebugger(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 mnuEditInMemoryViewer_Click(object sender, EventArgs e) { int baseAddress = _hoverBottomBank ? 0x1000 : 0x0000; if (this.cboChrSelection.SelectedIndex > 1) { baseAddress += (this.cboChrSelection.SelectedIndex - 1) * 0x2000; } int tileIndex = GetLargeSpriteIndex(_hoverTileIndex >= 0 ? _hoverTileIndex : _tileIndex); DebugWindowManager.OpenMemoryViewer(baseAddress + tileIndex * 16, GetChrMemoryType()); }
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); } } }
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e) { int baseAddress = _hoverBottomBank ? 0x1000 : 0x0000; if (this.cboChrSelection.SelectedIndex > 1) { baseAddress += (this.cboChrSelection.SelectedIndex - 1) * 0x2000; } bool ppuMemory = this.cboChrSelection.SelectedIndex == 0; bool isChrRam = InteropEmu.DebugGetMemorySize(DebugMemoryType.ChrRom) == 0; DebugMemoryType memType = ppuMemory ? DebugMemoryType.PpuMemory : (isChrRam ? DebugMemoryType.ChrRam : DebugMemoryType.ChrRom); int tileIndex = GetLargeSpriteIndex(_hoverTileIndex >= 0 ? _hoverTileIndex : _tileIndex); DebugWindowManager.OpenMemoryViewer(baseAddress + tileIndex * 16, memType); }
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); } } }
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e) { if (_selectedSprite < 0 && _contextMenuSpriteIndex < 0) { return; } int ramAddr = (_selectedSprite >= 0 ? _selectedSprite : _contextMenuSpriteIndex) * 4; int tileIndex = _spriteRam[ramAddr + 1]; DebugState state = new DebugState(); InteropEmu.DebugGetState(ref state); int tileIndexOffset = (!_largeSprites && state.PPU.ControlFlags.SpritePatternAddr == 0x1000) ? 256 : 0; DebugWindowManager.OpenMemoryViewer((tileIndex + tileIndexOffset) * 16, DebugMemoryType.PpuMemory); }
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); } } }
private void mnuToggleBreakpoint_Click(object sender, EventArgs e) { if (DebugWindowManager.GetDebugger() == null) { return; } PpuAddressTypeInfo addressInfo = InteropEmu.DebugGetPpuAbsoluteAddressAndType((uint)_currentPpuAddress); BreakpointManager.EditBreakpoint(new Breakpoint() { MemoryType = addressInfo.Type.ToMemoryType(), BreakOnExec = false, BreakOnRead = true, BreakOnWrite = true, Address = (UInt32)addressInfo.Address, StartAddress = (UInt32)addressInfo.Address, EndAddress = (UInt32)addressInfo.Address, AddressType = BreakpointAddressType.SingleAddress }); }
protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); DebugApi.ResumeExecution(); DebugWindowManager.CloseAll(); EmuApi.Stop(); if (_notifListener != null) { _notifListener.Dispose(); _notifListener = null; } ConfigManager.Config.WindowLocation = this.WindowState == FormWindowState.Normal ? this.Location : this.RestoreBounds.Location; ConfigManager.Config.WindowSize = this.WindowState == FormWindowState.Normal ? this.Size : this.RestoreBounds.Size; ConfigManager.ApplyChanges(); EmuApi.Release(); }
protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); InBackgroundHelper.StopBackgroundTimer(); if (_notifListener != null) { _notifListener.Dispose(); _notifListener = null; } if (!_shuttingDown && Program.IsMono) { //This appears to prevent Mono from locking up when closing the form DebugApi.ResumeExecution(); DebugWindowManager.CloseAll(); Task.Run(() => { EmuApi.Stop(); _shuttingDown = true; this.BeginInvoke((Action)(() => this.Close())); }); e.Cancel = true; return; } DebugApi.ResumeExecution(); DebugWindowManager.CloseAll(); ConfigManager.Config.WindowLocation = this.WindowState == FormWindowState.Normal ? this.Location : this.RestoreBounds.Location; ConfigManager.Config.WindowSize = this.WindowState == FormWindowState.Normal ? this.Size : this.RestoreBounds.Size; ConfigManager.ApplyChanges(); ConfigManager.SaveConfig(); EmuApi.Stop(); EmuApi.Release(); }
private void mnuEditInMemoryViewer_Click(object sender, EventArgs e) { DebugWindowManager.OpenMemoryViewer(_tileInfo.PpuAddress, DebugMemoryType.PpuMemory); }
private void mnuTextHooker_Click(object sender, EventArgs e) { DebugWindowManager.OpenDebugWindow(DebugWindow.TextHooker); }