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)
|
||||
{
|
||||
bool needUpdate = ((flags ^ _flags) & (int)DebuggerFlags::DisplayOpCodesInLowerCase) != 0;
|
||||
_flags = flags;
|
||||
if(needUpdate) {
|
||||
_disassembler->BuildOpCodeTables(CheckFlag(DebuggerFlags::DisplayOpCodesInLowerCase));
|
||||
}
|
||||
}
|
||||
|
||||
bool Debugger::CheckFlag(DebuggerFlags flag)
|
||||
|
|
|
@ -4,7 +4,8 @@ enum class DebuggerFlags
|
|||
{
|
||||
PpuPartialDraw = 1,
|
||||
ShowEffectiveAddresses = 2,
|
||||
ShowOnlyDisassembledCode = 4
|
||||
ShowOnlyDisassembledCode = 4,
|
||||
DisplayOpCodesInLowerCase = 8
|
||||
};
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
BuildOpCodeTables(false);
|
||||
}
|
||||
|
||||
Disassembler::~Disassembler()
|
||||
{
|
||||
}
|
||||
|
||||
void Disassembler::BuildOpCodeTables(bool useLowerCase)
|
||||
{
|
||||
string opName[256] = {
|
||||
// 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
|
||||
|
@ -65,7 +74,14 @@ Disassembler::Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSi
|
|||
};
|
||||
|
||||
for(int i = 0; i < 256; i++) {
|
||||
DisassemblyInfo::OPName[i] = opName[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::OPMode[i] = opMode[i];
|
||||
switch(DisassemblyInfo::OPMode[i]) {
|
||||
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)
|
||||
{
|
||||
return opCode == 0x10 || opCode == 0x30|| opCode == 0x50 || opCode == 0x70 || opCode == 0x90 || opCode == 0xB0 || opCode == 0xD0 || opCode == 0xF0 || opCode == 0x4C || opCode == 0x20;
|
||||
|
|
|
@ -29,6 +29,8 @@ private:
|
|||
public:
|
||||
Disassembler(uint8_t* internalRam, uint8_t* prgRom, uint32_t prgSize, uint8_t* prgRam, uint32_t prgRamSize, Debugger* debugger);
|
||||
~Disassembler();
|
||||
|
||||
void BuildOpCodeTables(bool useLowerCase);
|
||||
|
||||
uint32_t BuildCache(int32_t absoluteAddr, int32_t absoluteRamAddr, uint16_t memoryAddr, bool isSubEntryPoint);
|
||||
void InvalidateCache(uint16_t memoryAddr, int32_t absoluteRamAddr);
|
||||
|
|
|
@ -74,6 +74,7 @@ namespace Mesen.GUI.Config
|
|||
|
||||
public bool SplitView = false;
|
||||
public bool HexDisplay = true;
|
||||
public bool DisplayOpCodesInLowerCase = false;
|
||||
|
||||
public bool PpuAutoRefresh = true;
|
||||
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.ctrlPpuMemoryMapping = 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();
|
||||
this.splitContainer.Panel1.SuspendLayout();
|
||||
this.splitContainer.Panel2.SuspendLayout();
|
||||
|
@ -680,6 +681,7 @@
|
|||
this.mnuOptions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuSplitView,
|
||||
this.fontSizeToolStripMenuItem,
|
||||
this.mnuDisplayOpCodesInLowerCase,
|
||||
this.toolStripMenuItem5,
|
||||
this.mnuBreakOnReset,
|
||||
this.mnuBreakOnOpen,
|
||||
|
@ -996,6 +998,14 @@
|
|||
this.ctrlCpuMemoryMapping.Text = "ctrlMemoryMapping1";
|
||||
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
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -1130,5 +1140,6 @@
|
|||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem11;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuDisableDefaultLabels;
|
||||
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.mnuAutoLoadDbgFiles.Checked = ConfigManager.Config.DebugInfo.AutoLoadDbgFiles;
|
||||
this.mnuBreakOnOpen.Checked = ConfigManager.Config.DebugInfo.BreakOnOpen;
|
||||
this.mnuDisplayOpCodesInLowerCase.Checked = ConfigManager.Config.DebugInfo.DisplayOpCodesInLowerCase;
|
||||
|
||||
ctrlCpuMemoryMapping.Visible = mnuShowCpuMemoryMapping.Checked;
|
||||
ctrlPpuMemoryMapping.Visible = mnuShowPpuMemoryMapping.Checked;
|
||||
|
@ -172,6 +173,9 @@ namespace Mesen.GUI.Debugger
|
|||
if(mnuShowOnlyDisassembledCode.Checked) {
|
||||
flags |= DebuggerFlags.ShowOnlyDisassembledCode;
|
||||
}
|
||||
if(mnuDisplayOpCodesInLowerCase.Checked) {
|
||||
flags |= DebuggerFlags.DisplayOpCodesInLowerCase;
|
||||
}
|
||||
InteropEmu.DebugSetFlags(flags);
|
||||
}
|
||||
|
||||
|
@ -621,6 +625,14 @@ namespace Mesen.GUI.Debugger
|
|||
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)
|
||||
{
|
||||
ctrlCpuMemoryMapping.Invalidate();
|
||||
|
@ -655,7 +667,7 @@ namespace Mesen.GUI.Debugger
|
|||
_workspace = null;
|
||||
LabelManager.ResetLabels();
|
||||
UpdateWorkspace();
|
||||
UpdateDebugger();
|
||||
UpdateDebugger(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -816,6 +816,7 @@ namespace Mesen.GUI
|
|||
PpuPartialDraw = 1,
|
||||
ShowEffectiveAddresses = 2,
|
||||
ShowOnlyDisassembledCode = 4,
|
||||
DisplayOpCodesInLowerCase = 8,
|
||||
}
|
||||
|
||||
public struct InteropRomInfo
|
||||
|
|
Loading…
Add table
Reference in a new issue