Debugger - start some disassembler stuff

This commit is contained in:
adelikat 2014-12-13 21:41:39 +00:00
parent 9a7715009a
commit 15a64b954e
2 changed files with 119 additions and 0 deletions

View File

@ -44,9 +44,14 @@
this.BreakpointsGroupBox = new System.Windows.Forms.GroupBox();
this.BreakPointControl1 = new BizHawk.Client.EmuHawk.tools.Debugger.BreakpointControl();
this.DisassemblerBox = new System.Windows.Forms.GroupBox();
this.DisassemblerView = new BizHawk.Client.EmuHawk.VirtualListView();
this.Address = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Instruction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.label1 = new System.Windows.Forms.Label();
this.menuStrip1.SuspendLayout();
this.RegistersGroupBox.SuspendLayout();
this.BreakpointsGroupBox.SuspendLayout();
this.DisassemblerBox.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
@ -185,6 +190,8 @@
//
this.DisassemblerBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.DisassemblerBox.Controls.Add(this.label1);
this.DisassemblerBox.Controls.Add(this.DisassemblerView);
this.DisassemblerBox.Location = new System.Drawing.Point(12, 27);
this.DisassemblerBox.Name = "DisassemblerBox";
this.DisassemblerBox.Size = new System.Drawing.Size(407, 521);
@ -192,6 +199,46 @@
this.DisassemblerBox.TabStop = false;
this.DisassemblerBox.Text = "Disassembler";
//
// DisassemblerView
//
this.DisassemblerView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.DisassemblerView.BlazingFast = false;
this.DisassemblerView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.Address,
this.Instruction});
this.DisassemblerView.GridLines = true;
this.DisassemblerView.ItemCount = 0;
this.DisassemblerView.Location = new System.Drawing.Point(6, 39);
this.DisassemblerView.Name = "DisassemblerView";
this.DisassemblerView.SelectAllInProgress = false;
this.DisassemblerView.selectedItem = -1;
this.DisassemblerView.Size = new System.Drawing.Size(395, 476);
this.DisassemblerView.TabIndex = 1;
this.DisassemblerView.UseCompatibleStateImageBehavior = false;
this.DisassemblerView.UseCustomBackground = true;
this.DisassemblerView.View = System.Windows.Forms.View.Details;
//
// Address
//
this.Address.Text = "Address";
this.Address.Width = 94;
//
// Instruction
//
this.Instruction.Text = "Instruction";
this.Instruction.Width = 143;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 23);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(29, 13);
this.label1.TabIndex = 2;
this.label1.Text = "Cpu:";
//
// GenericDebugger
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -211,6 +258,8 @@
this.menuStrip1.PerformLayout();
this.RegistersGroupBox.ResumeLayout(false);
this.BreakpointsGroupBox.ResumeLayout(false);
this.DisassemblerBox.ResumeLayout(false);
this.DisassemblerBox.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@ -233,5 +282,9 @@
private System.Windows.Forms.GroupBox BreakpointsGroupBox;
private tools.Debugger.BreakpointControl BreakPointControl1;
private System.Windows.Forms.GroupBox DisassemblerBox;
private VirtualListView DisassemblerView;
private System.Windows.Forms.ColumnHeader Address;
private System.Windows.Forms.ColumnHeader Instruction;
private System.Windows.Forms.Label label1;
}
}

View File

@ -19,12 +19,17 @@ namespace BizHawk.Client.EmuHawk
private int _defaultHeight;
private IDebuggable Core;
private IDisassemblable Disassembler;
public GenericDebugger()
{
InitializeComponent();
TopMost = Global.Config.GenericDebuggerSettings.TopMost;
Closing += (o, e) => DisengageDebugger();
DisassemblerView.QueryItemText += DisassemblerView_QueryItemText;
DisassemblerView.QueryItemBkColor += DisassemblerView_QueryItemBkColor;
DisassemblerView.VirtualMode = true;
}
private void GenericDebugger_Load(object sender, EventArgs e)
@ -51,9 +56,21 @@ namespace BizHawk.Client.EmuHawk
Close();
}
Disassembler = Global.Emulator.AsDissassembler();
EngageDebugger();
}
private void DisassemblerView_QueryItemText(int index, int column, out string text)
{
text = string.Empty;
}
private void DisassemblerView_QueryItemBkColor(int index, int column, ref Color color)
{
}
public void DisableRegisterBox()
{
RegistersGroupBox.Enabled = false;
@ -61,6 +78,55 @@ namespace BizHawk.Client.EmuHawk
private void EngageDebugger()
{
if (Core.CanDisassemble())
{
try
{
// Quick way to check if setting is implemented
Disassembler.Cpu = Disassembler.Cpu;
if (Disassembler.AvailableCpus.Count() > 1)
{
var c = new ComboBox
{
Location = new Point(30, 20),
DropDownStyle = ComboBoxStyle.DropDownList
};
c.Items.AddRange(Core.AsDissassembler().AvailableCpus.ToArray());
c.SelectedItem = Core.AsDissassembler().Cpu;
Controls.Add(c);
}
else
{
DisassemblerBox.Controls.Add(new Label
{
Location = new Point(30, 23),
Text = Disassembler.Cpu
});
}
}
catch (NotImplementedException)
{
DisassemblerBox.Controls.Add(new Label
{
Location = new Point(30, 23),
Text = Disassembler.Cpu
});
}
}
else
{
DisassemblerBox.Enabled = false;
DisassemblerBox.Controls.Add(new Label
{
Location = new Point(35, 23),
Text = "Unknown"
});
}
RegisterPanel.Core = Core;
RegisterPanel.ParentDebugger = this;
RegisterPanel.GenerateUI();