Debugger: Memory Viewer - Added missing right-click navigation options between the various PPU memory types
This commit is contained in:
parent
9b68473863
commit
cc07cb283a
3 changed files with 60 additions and 23 deletions
|
@ -205,7 +205,7 @@ namespace Mesen.GUI.Config
|
|||
public XmlKeys MemoryViewer_Import = Keys.Control | Keys.O;
|
||||
[ShortcutName("Export")]
|
||||
public XmlKeys MemoryViewer_Export = Keys.Control | Keys.S;
|
||||
[ShortcutName("View in CPU Memory")]
|
||||
[ShortcutName("View in CPU/PPU Memory")]
|
||||
public XmlKeys MemoryViewer_ViewInCpuMemory = Keys.None;
|
||||
[ShortcutName("View in [memory type]")]
|
||||
public XmlKeys MemoryViewer_ViewInMemoryType = Keys.None;
|
||||
|
|
|
@ -584,29 +584,46 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
|
||||
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;
|
||||
bool viewInCpuMemoryVisible = false;
|
||||
bool viewInPpuMemoryVisible = false;
|
||||
if(_memoryType == DebugMemoryType.PrgRom || _memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam) {
|
||||
viewInCpuMemoryVisible = true;
|
||||
} else if(_memoryType == DebugMemoryType.ChrRom || _memoryType == DebugMemoryType.ChrRam || _memoryType == DebugMemoryType.NametableRam || _memoryType == DebugMemoryType.PaletteMemory) {
|
||||
viewInPpuMemoryVisible = true;
|
||||
}
|
||||
bool viewInMemoryTypeVisible = _memoryType == DebugMemoryType.CpuMemory || _memoryType == DebugMemoryType.PpuMemory;
|
||||
mnuViewInCpuMemory.Visible = viewInCpuMemoryVisible || viewInPpuMemoryVisible;
|
||||
mnuViewInMemoryType.Visible = viewInMemoryTypeVisible;
|
||||
mnuViewInDisassembly.Visible = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);
|
||||
sepViewActions.Visible = (viewInCpuMemoryVisible || viewInMemoryTypeVisible);
|
||||
sepViewActions.Visible = (viewInCpuMemoryVisible || viewInPpuMemoryVisible || 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);
|
||||
bool viewInMemoryTypeEnabled = false;
|
||||
if(_memoryType == DebugMemoryType.CpuMemory) {
|
||||
AddressTypeInfo addressInfo = new AddressTypeInfo();
|
||||
InteropEmu.DebugGetAbsoluteAddressAndType(startAddress, addressInfo);
|
||||
mnuViewInMemoryType.Text = $"View in " + ResourceHelper.GetEnumText(addressInfo.Type) + $" ({address})";
|
||||
viewInMemoryTypeEnabled = addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam);
|
||||
} else {
|
||||
PpuAddressTypeInfo addressInfo = InteropEmu.DebugGetPpuAbsoluteAddressAndType(startAddress);
|
||||
mnuViewInMemoryType.Text = $"View in " + ResourceHelper.GetEnumText(addressInfo.Type) + $" ({address})";
|
||||
viewInMemoryTypeEnabled = addressInfo.Address >= 0 && (addressInfo.Type == PpuAddressType.ChrRam || addressInfo.Type == PpuAddressType.ChrRom || addressInfo.Type == PpuAddressType.NametableRam || addressInfo.Type == PpuAddressType.PaletteRam);
|
||||
}
|
||||
mnuViewInDisassembly.Enabled = DebugWindowManager.GetDebugger() != null;
|
||||
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})";
|
||||
} else if(viewInCpuMemoryVisible || viewInPpuMemoryVisible) {
|
||||
int relativeAddress = -1;
|
||||
if(viewInCpuMemoryVisible) {
|
||||
relativeAddress = InteropEmu.DebugGetRelativeAddress(startAddress, _memoryType.ToAddressType());
|
||||
mnuViewInCpuMemory.Text = $"View in CPU memory ({address})";
|
||||
} else {
|
||||
relativeAddress = InteropEmu.DebugGetRelativePpuAddress(startAddress, _memoryType.ToPpuAddressType());
|
||||
mnuViewInCpuMemory.Text = $"View in PPU memory ({address})";
|
||||
}
|
||||
mnuViewInCpuMemory.Enabled = relativeAddress >= 0;
|
||||
mnuViewInDisassembly.Enabled = debugger != null && relativeAddress >= 0;
|
||||
mnuViewInDisassembly.Enabled = viewInCpuMemoryVisible && DebugWindowManager.GetDebugger() != null && relativeAddress >= 0;
|
||||
mnuViewInMemoryType.Enabled = false;
|
||||
} else {
|
||||
mnuViewInMemoryType.Enabled = false;
|
||||
|
@ -701,18 +718,32 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
|
||||
private void mnuViewInCpuMemory_Click(object sender, EventArgs e)
|
||||
{
|
||||
int relativeAddress = InteropEmu.DebugGetRelativeAddress((UInt32)SelectionStartAddress, _memoryType.ToAddressType());
|
||||
if(relativeAddress >= 0) {
|
||||
MemoryViewer.ShowAddress(relativeAddress, DebugMemoryType.CpuMemory);
|
||||
if(_memoryType == DebugMemoryType.WorkRam || _memoryType == DebugMemoryType.SaveRam || _memoryType == DebugMemoryType.PrgRom) {
|
||||
int relativeAddress = InteropEmu.DebugGetRelativeAddress((UInt32)SelectionStartAddress, _memoryType.ToAddressType());
|
||||
if(relativeAddress >= 0) {
|
||||
MemoryViewer.ShowAddress(relativeAddress, DebugMemoryType.CpuMemory);
|
||||
}
|
||||
} else {
|
||||
int relativeAddress = InteropEmu.DebugGetRelativePpuAddress((UInt32)SelectionStartAddress, _memoryType.ToPpuAddressType());
|
||||
if(relativeAddress >= 0) {
|
||||
MemoryViewer.ShowAddress(relativeAddress, DebugMemoryType.PpuMemory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuViewInMemoryType_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddressTypeInfo addressInfo = new AddressTypeInfo();
|
||||
InteropEmu.DebugGetAbsoluteAddressAndType((UInt32)SelectionStartAddress, addressInfo);
|
||||
if(addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam)) {
|
||||
MemoryViewer.ShowAddress(addressInfo.Address, addressInfo.Type.ToMemoryType());
|
||||
if(_memoryType == DebugMemoryType.CpuMemory) {
|
||||
AddressTypeInfo addressInfo = new AddressTypeInfo();
|
||||
InteropEmu.DebugGetAbsoluteAddressAndType((UInt32)SelectionStartAddress, addressInfo);
|
||||
if(addressInfo.Address >= 0 && (addressInfo.Type == AddressType.PrgRom || addressInfo.Type == AddressType.WorkRam || addressInfo.Type == AddressType.SaveRam)) {
|
||||
MemoryViewer.ShowAddress(addressInfo.Address, addressInfo.Type.ToMemoryType());
|
||||
}
|
||||
} else {
|
||||
PpuAddressTypeInfo addressInfo = InteropEmu.DebugGetPpuAbsoluteAddressAndType((UInt32)SelectionStartAddress);
|
||||
if(addressInfo.Address >= 0) {
|
||||
MemoryViewer.ShowAddress(addressInfo.Address, addressInfo.Type.ToMemoryType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1093,6 +1093,12 @@
|
|||
<Value ID="SaveRam">Save RAM</Value>
|
||||
<Value ID="Register">Register</Value>
|
||||
</Enum>
|
||||
<Enum ID="PpuAddressType">
|
||||
<Value ID="ChrRom">CHR ROM</Value>
|
||||
<Value ID="ChrRam">CHR RAM</Value>
|
||||
<Value ID="NametableRam">Nametable RAM</Value>
|
||||
<Value ID="PaletteRam">Palette RAM</Value>
|
||||
</Enum>
|
||||
<Enum ID="DebugMemoryType">
|
||||
<Value ID="CpuMemory">CPU Memory</Value>
|
||||
<Value ID="PpuMemory">PPU Memory</Value>
|
||||
|
|
Loading…
Add table
Reference in a new issue