Debugger: Option to display opcodes in lower case
This commit is contained in:
parent
29a3ac45e4
commit
33ca8cb3f5
8 changed files with 51 additions and 7 deletions
|
@ -79,7 +79,11 @@ void Debugger::Resume()
|
||||||
|
|
||||||
void Debugger::SetFlags(uint32_t flags)
|
void Debugger::SetFlags(uint32_t flags)
|
||||||
{
|
{
|
||||||
|
bool needUpdate = ((flags ^ _flags) & (int)DebuggerFlags::DisplayOpCodesInLowerCase) != 0;
|
||||||
_flags = flags;
|
_flags = flags;
|
||||||
|
if(needUpdate) {
|
||||||
|
_disassembler->BuildOpCodeTables(CheckFlag(DebuggerFlags::DisplayOpCodesInLowerCase));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Debugger::CheckFlag(DebuggerFlags flag)
|
bool Debugger::CheckFlag(DebuggerFlags flag)
|
||||||
|
|
|
@ -4,7 +4,8 @@ enum class DebuggerFlags
|
||||||
{
|
{
|
||||||
PpuPartialDraw = 1,
|
PpuPartialDraw = 1,
|
||||||
ShowEffectiveAddresses = 2,
|
ShowEffectiveAddresses = 2,
|
||||||
ShowOnlyDisassembledCode = 4
|
ShowOnlyDisassembledCode = 4,
|
||||||
|
DisplayOpCodesInLowerCase = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class AddressType
|
enum class AddressType
|
||||||
|
|
|
@ -25,6 +25,15 @@ Disassembler::Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSi
|
||||||
_disassembleMemoryCache.push_back(shared_ptr<DisassemblyInfo>(nullptr));
|
_disassembleMemoryCache.push_back(shared_ptr<DisassemblyInfo>(nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BuildOpCodeTables(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Disassembler::~Disassembler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Disassembler::BuildOpCodeTables(bool useLowerCase)
|
||||||
|
{
|
||||||
string opName[256] = {
|
string opName[256] = {
|
||||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||||
"BRK", "ORA", "", "SLO*", "NOP", "ORA", "ASL", "SLO*", "PHP", "ORA", "ASL", "ANC*", "NOP", "ORA", "ASL", "SLO*", //0
|
"BRK", "ORA", "", "SLO*", "NOP", "ORA", "ASL", "SLO*", "PHP", "ORA", "ASL", "ANC*", "NOP", "ORA", "ASL", "SLO*", //0
|
||||||
|
@ -65,7 +74,14 @@ Disassembler::Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSi
|
||||||
};
|
};
|
||||||
|
|
||||||
for(int i = 0; i < 256; i++) {
|
for(int i = 0; i < 256; i++) {
|
||||||
|
if(useLowerCase) {
|
||||||
|
string name = opName[i];
|
||||||
|
std::transform(name.begin(), name.end(), name.begin(), std::tolower);
|
||||||
|
DisassemblyInfo::OPName[i] = name;
|
||||||
|
} else {
|
||||||
DisassemblyInfo::OPName[i] = opName[i];
|
DisassemblyInfo::OPName[i] = opName[i];
|
||||||
|
}
|
||||||
|
|
||||||
DisassemblyInfo::OPMode[i] = opMode[i];
|
DisassemblyInfo::OPMode[i] = opMode[i];
|
||||||
switch(DisassemblyInfo::OPMode[i]) {
|
switch(DisassemblyInfo::OPMode[i]) {
|
||||||
case AddrMode::Abs:
|
case AddrMode::Abs:
|
||||||
|
@ -95,10 +111,6 @@ Disassembler::Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Disassembler::~Disassembler()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Disassembler::IsJump(uint8_t opCode)
|
bool Disassembler::IsJump(uint8_t opCode)
|
||||||
{
|
{
|
||||||
return opCode == 0x10 || opCode == 0x30|| opCode == 0x50 || opCode == 0x70 || opCode == 0x90 || opCode == 0xB0 || opCode == 0xD0 || opCode == 0xF0 || opCode == 0x4C || opCode == 0x20;
|
return opCode == 0x10 || opCode == 0x30|| opCode == 0x50 || opCode == 0x70 || opCode == 0x90 || opCode == 0xB0 || opCode == 0xD0 || opCode == 0xF0 || opCode == 0x4C || opCode == 0x20;
|
||||||
|
|
|
@ -30,6 +30,8 @@ public:
|
||||||
Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSize, uint8_t* prgRam, uint32_t prgRamSize, Debugger* debugger);
|
Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSize, uint8_t* prgRam, uint32_t prgRamSize, Debugger* debugger);
|
||||||
~Disassembler();
|
~Disassembler();
|
||||||
|
|
||||||
|
void BuildOpCodeTables(bool useLowerCase);
|
||||||
|
|
||||||
uint32_t BuildCache(int32_t absoluteAddr, int32_t absoluteRamAddr, uint16_t memoryAddr, bool isSubEntryPoint);
|
uint32_t BuildCache(int32_t absoluteAddr, int32_t absoluteRamAddr, uint16_t memoryAddr, bool isSubEntryPoint);
|
||||||
void InvalidateCache(uint16_t memoryAddr, int32_t absoluteRamAddr);
|
void InvalidateCache(uint16_t memoryAddr, int32_t absoluteRamAddr);
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ namespace Mesen.GUI.Config
|
||||||
|
|
||||||
public bool SplitView = false;
|
public bool SplitView = false;
|
||||||
public bool HexDisplay = true;
|
public bool HexDisplay = true;
|
||||||
|
public bool DisplayOpCodesInLowerCase = false;
|
||||||
|
|
||||||
public bool PpuAutoRefresh = true;
|
public bool PpuAutoRefresh = true;
|
||||||
public bool PpuPartialDraw = false;
|
public bool PpuPartialDraw = false;
|
||||||
|
|
11
GUI.NET/Debugger/frmDebugger.Designer.cs
generated
11
GUI.NET/Debugger/frmDebugger.Designer.cs
generated
|
@ -127,6 +127,7 @@
|
||||||
this.lblChrAnalysisResult = new System.Windows.Forms.ToolStripStatusLabel();
|
this.lblChrAnalysisResult = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.ctrlPpuMemoryMapping = new Mesen.GUI.Debugger.Controls.ctrlMemoryMapping();
|
this.ctrlPpuMemoryMapping = new Mesen.GUI.Debugger.Controls.ctrlMemoryMapping();
|
||||||
this.ctrlCpuMemoryMapping = new Mesen.GUI.Debugger.Controls.ctrlMemoryMapping();
|
this.ctrlCpuMemoryMapping = new Mesen.GUI.Debugger.Controls.ctrlMemoryMapping();
|
||||||
|
this.mnuDisplayOpCodesInLowerCase = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
|
||||||
this.splitContainer.Panel1.SuspendLayout();
|
this.splitContainer.Panel1.SuspendLayout();
|
||||||
this.splitContainer.Panel2.SuspendLayout();
|
this.splitContainer.Panel2.SuspendLayout();
|
||||||
|
@ -680,6 +681,7 @@
|
||||||
this.mnuOptions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.mnuOptions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.mnuSplitView,
|
this.mnuSplitView,
|
||||||
this.fontSizeToolStripMenuItem,
|
this.fontSizeToolStripMenuItem,
|
||||||
|
this.mnuDisplayOpCodesInLowerCase,
|
||||||
this.toolStripMenuItem5,
|
this.toolStripMenuItem5,
|
||||||
this.mnuBreakOnReset,
|
this.mnuBreakOnReset,
|
||||||
this.mnuBreakOnOpen,
|
this.mnuBreakOnOpen,
|
||||||
|
@ -996,6 +998,14 @@
|
||||||
this.ctrlCpuMemoryMapping.Text = "ctrlMemoryMapping1";
|
this.ctrlCpuMemoryMapping.Text = "ctrlMemoryMapping1";
|
||||||
this.ctrlCpuMemoryMapping.Visible = false;
|
this.ctrlCpuMemoryMapping.Visible = false;
|
||||||
//
|
//
|
||||||
|
// mnuDisplayOpCodesInLowerCase
|
||||||
|
//
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.CheckOnClick = true;
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.Name = "mnuDisplayOpCodesInLowerCase";
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.Size = new System.Drawing.Size(243, 22);
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.Text = "Display OP codes in lower case";
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.Click += new System.EventHandler(this.mnuDisplayOpCodesInLowerCase_Click);
|
||||||
|
//
|
||||||
// frmDebugger
|
// frmDebugger
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -1130,5 +1140,6 @@
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem11;
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem11;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuDisableDefaultLabels;
|
private System.Windows.Forms.ToolStripMenuItem mnuDisableDefaultLabels;
|
||||||
private System.Windows.Forms.ToolStripMenuItem mnuBreakOnReset;
|
private System.Windows.Forms.ToolStripMenuItem mnuBreakOnReset;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem mnuDisplayOpCodesInLowerCase;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -51,6 +51,7 @@ namespace Mesen.GUI.Debugger
|
||||||
this.mnuHighlightUnexecutedCode.Checked = ConfigManager.Config.DebugInfo.HighlightUnexecutedCode;
|
this.mnuHighlightUnexecutedCode.Checked = ConfigManager.Config.DebugInfo.HighlightUnexecutedCode;
|
||||||
this.mnuAutoLoadDbgFiles.Checked = ConfigManager.Config.DebugInfo.AutoLoadDbgFiles;
|
this.mnuAutoLoadDbgFiles.Checked = ConfigManager.Config.DebugInfo.AutoLoadDbgFiles;
|
||||||
this.mnuBreakOnOpen.Checked = ConfigManager.Config.DebugInfo.BreakOnOpen;
|
this.mnuBreakOnOpen.Checked = ConfigManager.Config.DebugInfo.BreakOnOpen;
|
||||||
|
this.mnuDisplayOpCodesInLowerCase.Checked = ConfigManager.Config.DebugInfo.DisplayOpCodesInLowerCase;
|
||||||
|
|
||||||
ctrlCpuMemoryMapping.Visible = mnuShowCpuMemoryMapping.Checked;
|
ctrlCpuMemoryMapping.Visible = mnuShowCpuMemoryMapping.Checked;
|
||||||
ctrlPpuMemoryMapping.Visible = mnuShowPpuMemoryMapping.Checked;
|
ctrlPpuMemoryMapping.Visible = mnuShowPpuMemoryMapping.Checked;
|
||||||
|
@ -172,6 +173,9 @@ namespace Mesen.GUI.Debugger
|
||||||
if(mnuShowOnlyDisassembledCode.Checked) {
|
if(mnuShowOnlyDisassembledCode.Checked) {
|
||||||
flags |= DebuggerFlags.ShowOnlyDisassembledCode;
|
flags |= DebuggerFlags.ShowOnlyDisassembledCode;
|
||||||
}
|
}
|
||||||
|
if(mnuDisplayOpCodesInLowerCase.Checked) {
|
||||||
|
flags |= DebuggerFlags.DisplayOpCodesInLowerCase;
|
||||||
|
}
|
||||||
InteropEmu.DebugSetFlags(flags);
|
InteropEmu.DebugSetFlags(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,6 +625,14 @@ namespace Mesen.GUI.Debugger
|
||||||
ConfigManager.ApplyChanges();
|
ConfigManager.ApplyChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void mnuDisplayOpCodesInLowerCase_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ConfigManager.Config.DebugInfo.DisplayOpCodesInLowerCase = mnuDisplayOpCodesInLowerCase.Checked;
|
||||||
|
ConfigManager.ApplyChanges();
|
||||||
|
this.UpdateDebuggerFlags();
|
||||||
|
this.UpdateDebugger(false);
|
||||||
|
}
|
||||||
|
|
||||||
private void frmDebugger_Resize(object sender, EventArgs e)
|
private void frmDebugger_Resize(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ctrlCpuMemoryMapping.Invalidate();
|
ctrlCpuMemoryMapping.Invalidate();
|
||||||
|
@ -655,7 +667,7 @@ namespace Mesen.GUI.Debugger
|
||||||
_workspace = null;
|
_workspace = null;
|
||||||
LabelManager.ResetLabels();
|
LabelManager.ResetLabels();
|
||||||
UpdateWorkspace();
|
UpdateWorkspace();
|
||||||
UpdateDebugger();
|
UpdateDebugger(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -816,6 +816,7 @@ namespace Mesen.GUI
|
||||||
PpuPartialDraw = 1,
|
PpuPartialDraw = 1,
|
||||||
ShowEffectiveAddresses = 2,
|
ShowEffectiveAddresses = 2,
|
||||||
ShowOnlyDisassembledCode = 4,
|
ShowOnlyDisassembledCode = 4,
|
||||||
|
DisplayOpCodesInLowerCase = 8,
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct InteropRomInfo
|
public struct InteropRomInfo
|
||||||
|
|
Loading…
Add table
Reference in a new issue