Debugger: Event Viewer - Add list view (+ misc event viewer bug fixes)
This commit is contained in:
parent
ac7c2e9953
commit
a1853f15bc
17 changed files with 1484 additions and 726 deletions
|
@ -9,7 +9,7 @@ class MemoryManager;
|
|||
class DmaController final : public ISerializable
|
||||
{
|
||||
private:
|
||||
static constexpr uint8_t HdmaChannelFlag = 0x80;
|
||||
static constexpr uint8_t HdmaChannelFlag = 0x40;
|
||||
|
||||
bool _needToProcess = false;
|
||||
bool _hdmaPending = false;
|
||||
|
|
|
@ -26,7 +26,7 @@ EventManager::~EventManager()
|
|||
|
||||
void EventManager::AddEvent(DebugEventType type, MemoryOperationInfo &operation, int32_t breakpointId)
|
||||
{
|
||||
DebugEventInfo evt;
|
||||
DebugEventInfo evt = {};
|
||||
evt.Type = type;
|
||||
evt.Operation = operation;
|
||||
evt.Scanline = _ppu->GetScanline();
|
||||
|
@ -35,7 +35,9 @@ void EventManager::AddEvent(DebugEventType type, MemoryOperationInfo &operation,
|
|||
|
||||
if(operation.Type == MemoryOperationType::DmaRead || operation.Type == MemoryOperationType::DmaWrite) {
|
||||
evt.DmaChannel = _dmaController->GetActiveChannel();
|
||||
evt.DmaChannelInfo = _dmaController->GetChannelConfig(evt.DmaChannel);
|
||||
evt.DmaChannelInfo = _dmaController->GetChannelConfig(evt.DmaChannel & 0x07);
|
||||
} else {
|
||||
evt.DmaChannel = -1;
|
||||
}
|
||||
|
||||
CpuState state = _cpu->GetState();
|
||||
|
@ -50,6 +52,8 @@ void EventManager::AddEvent(DebugEventType type)
|
|||
evt.Type = type;
|
||||
evt.Scanline = _ppu->GetScanline();
|
||||
evt.Cycle = _ppu->GetCycle();
|
||||
evt.BreakpointId = -1;
|
||||
evt.DmaChannel = -1;
|
||||
|
||||
CpuState state = _cpu->GetState();
|
||||
evt.ProgramCounter = (state.K << 16) | state.PC;
|
||||
|
@ -57,13 +61,11 @@ void EventManager::AddEvent(DebugEventType type)
|
|||
_debugEvents.push_back(evt);
|
||||
}
|
||||
|
||||
void EventManager::GetEvents(DebugEventInfo *eventArray, uint32_t &maxEventCount, bool getPreviousFrameData)
|
||||
void EventManager::GetEvents(DebugEventInfo *eventArray, uint32_t &maxEventCount)
|
||||
{
|
||||
DebugBreakHelper breakHelper(_debugger);
|
||||
|
||||
vector<DebugEventInfo> &events = getPreviousFrameData ? _prevDebugEvents : _debugEvents;
|
||||
uint32_t eventCount = std::min(maxEventCount, (uint32_t)events.size());
|
||||
memcpy(eventArray, events.data(), eventCount * sizeof(DebugEventInfo));
|
||||
auto lock = _lock.AcquireSafe();
|
||||
uint32_t eventCount = std::min(maxEventCount, (uint32_t)_sentEvents.size());
|
||||
memcpy(eventArray, _sentEvents.data(), eventCount * sizeof(DebugEventInfo));
|
||||
maxEventCount = eventCount;
|
||||
}
|
||||
|
||||
|
@ -82,10 +84,11 @@ DebugEventInfo EventManager::GetEvent(uint16_t scanline, uint16_t cycle, EventVi
|
|||
return empty;
|
||||
}
|
||||
|
||||
uint32_t EventManager::GetEventCount(bool getPreviousFrameData)
|
||||
uint32_t EventManager::GetEventCount(EventViewerDisplayOptions options)
|
||||
{
|
||||
DebugBreakHelper breakHelper(_debugger);
|
||||
return (uint32_t)(getPreviousFrameData ? _prevDebugEvents.size() : _debugEvents.size());
|
||||
auto lock = _lock.AcquireSafe();
|
||||
FilterEvents(options);
|
||||
return (uint32_t)_sentEvents.size();
|
||||
}
|
||||
|
||||
void EventManager::ClearFrameEvents()
|
||||
|
@ -94,47 +97,81 @@ void EventManager::ClearFrameEvents()
|
|||
_debugEvents.clear();
|
||||
}
|
||||
|
||||
void EventManager::FilterEvents(EventViewerDisplayOptions &options)
|
||||
{
|
||||
auto lock = _lock.AcquireSafe();
|
||||
_sentEvents.clear();
|
||||
|
||||
vector<DebugEventInfo> events = _snapshot;
|
||||
if(options.ShowPreviousFrameEvents && _snapshotScanline != 0) {
|
||||
uint32_t key = (_snapshotScanline << 9) + _snapshotCycle;
|
||||
for(DebugEventInfo &evt : _prevDebugEvents) {
|
||||
uint32_t evtKey = (evt.Scanline << 9) + evt.Cycle;
|
||||
if(evtKey > key) {
|
||||
events.push_back(evt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(DebugEventInfo &evt : events) {
|
||||
bool isWrite = evt.Operation.Type == MemoryOperationType::Write || evt.Operation.Type == MemoryOperationType::DmaWrite;
|
||||
bool isDma = evt.Operation.Type == MemoryOperationType::DmaWrite || evt.Operation.Type == MemoryOperationType::DmaRead;
|
||||
bool showEvent = false;
|
||||
uint32_t color = 0;
|
||||
switch(evt.Type) {
|
||||
case DebugEventType::Breakpoint: showEvent = options.ShowMarkedBreakpoints;break;
|
||||
case DebugEventType::Irq: showEvent = options.ShowIrq; break;
|
||||
case DebugEventType::Nmi: showEvent = options.ShowNmi; break;
|
||||
case DebugEventType::Register:
|
||||
if(isDma && !options.ShowDmaChannels[evt.DmaChannel & 0x07]) {
|
||||
showEvent = false;
|
||||
break;
|
||||
}
|
||||
|
||||
uint16_t reg = evt.Operation.Address & 0xFFFF;
|
||||
if(reg <= 0x213F) {
|
||||
showEvent = isWrite ? options.ShowPpuRegisterWrites : options.ShowPpuRegisterReads;
|
||||
} else if(reg <= 0x217F) {
|
||||
showEvent = isWrite ? options.ShowApuRegisterWrites : options.ShowApuRegisterReads;
|
||||
} else if(reg <= 0x2183) {
|
||||
showEvent = isWrite ? options.ShowWorkRamRegisterWrites : options.ShowWorkRamRegisterReads;
|
||||
} else if(reg >= 0x4000) {
|
||||
showEvent = isWrite ? options.ShowCpuRegisterWrites : options.ShowCpuRegisterReads;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(showEvent) {
|
||||
_sentEvents.push_back(evt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EventManager::DrawEvent(DebugEventInfo &evt, bool drawBackground, uint32_t *buffer, EventViewerDisplayOptions &options)
|
||||
{
|
||||
bool isWrite = evt.Operation.Type == MemoryOperationType::Write || evt.Operation.Type == MemoryOperationType::DmaWrite;
|
||||
bool isDma = evt.Operation.Type == MemoryOperationType::DmaWrite || evt.Operation.Type == MemoryOperationType::DmaRead;
|
||||
bool showEvent = false;
|
||||
uint32_t color = 0;
|
||||
switch(evt.Type) {
|
||||
case DebugEventType::Breakpoint: showEvent = options.ShowMarkedBreakpoints; color = options.BreakpointColor; break;
|
||||
case DebugEventType::Irq: showEvent = options.ShowIrq; color = options.IrqColor; break;
|
||||
case DebugEventType::Nmi: showEvent = options.ShowNmi; color = options.NmiColor; break;
|
||||
case DebugEventType::Breakpoint: color = options.BreakpointColor; break;
|
||||
case DebugEventType::Irq: color = options.IrqColor; break;
|
||||
case DebugEventType::Nmi: color = options.NmiColor; break;
|
||||
case DebugEventType::Register:
|
||||
if(isDma && !options.ShowDmaChannels[evt.DmaChannel]) {
|
||||
showEvent = false;
|
||||
break;
|
||||
}
|
||||
|
||||
uint16_t reg = evt.Operation.Address & 0xFFFF;
|
||||
if(reg <= 0x213F) {
|
||||
showEvent = isWrite ? options.ShowPpuRegisterWrites : options.ShowPpuRegisterReads;
|
||||
color = isWrite ? options.PpuRegisterWriteColor : options.PpuRegisterReadColor;
|
||||
} else if(reg <= 0x217F) {
|
||||
showEvent = isWrite ? options.ShowApuRegisterWrites : options.ShowApuRegisterReads;
|
||||
color = isWrite ? options.ApuRegisterWriteColor : options.ApuRegisterReadColor;
|
||||
} else if(reg <= 0x2183) {
|
||||
showEvent = isWrite ? options.ShowWorkRamRegisterWrites : options.ShowWorkRamRegisterReads;
|
||||
color = isWrite ? options.WorkRamRegisterWriteColor : options.WorkRamRegisterReadColor;
|
||||
} else if(reg >= 0x4000) {
|
||||
showEvent = isWrite ? options.ShowCpuRegisterWrites : options.ShowCpuRegisterReads;
|
||||
color = isWrite ? options.CpuRegisterWriteColor : options.CpuRegisterReadColor;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(!showEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(drawBackground){
|
||||
color = 0xFF000000 | ((color >> 1) & 0x7F7F7F);
|
||||
} else {
|
||||
_sentEvents.push_back(evt);
|
||||
color |= 0xFF000000;
|
||||
}
|
||||
|
||||
|
@ -180,16 +217,8 @@ uint32_t EventManager::TakeEventSnapshot(EventViewerDisplayOptions options)
|
|||
}
|
||||
|
||||
_snapshot = _debugEvents;
|
||||
_snapshotScanline = _ppu->GetRealScanline();
|
||||
if(options.ShowPreviousFrameEvents && scanline != 0) {
|
||||
for(DebugEventInfo &evt : _prevDebugEvents) {
|
||||
uint32_t evtKey = (evt.Scanline << 9) + evt.Cycle;
|
||||
if(evtKey > key) {
|
||||
_snapshot.push_back(evt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_snapshotScanline = scanline;
|
||||
_snapshotCycle = cycle;
|
||||
_scanlineCount = _ppu->GetVblankEndScanline() + 1;
|
||||
return _scanlineCount;
|
||||
}
|
||||
|
@ -197,7 +226,6 @@ uint32_t EventManager::TakeEventSnapshot(EventViewerDisplayOptions options)
|
|||
void EventManager::GetDisplayBuffer(uint32_t *buffer, EventViewerDisplayOptions options)
|
||||
{
|
||||
auto lock = _lock.AcquireSafe();
|
||||
_sentEvents.clear();
|
||||
|
||||
for(int i = 0; i < 340 * 2 * (int)_scanlineCount * 2; i++) {
|
||||
buffer[i] = 0xFF555555;
|
||||
|
@ -226,10 +254,11 @@ void EventManager::GetDisplayBuffer(uint32_t *buffer, EventViewerDisplayOptions
|
|||
}
|
||||
}
|
||||
|
||||
for(DebugEventInfo &evt : _snapshot) {
|
||||
FilterEvents(options);
|
||||
for(DebugEventInfo &evt : _sentEvents) {
|
||||
DrawEvent(evt, true, buffer, options);
|
||||
}
|
||||
for(DebugEventInfo &evt : _snapshot) {
|
||||
for(DebugEventInfo &evt : _sentEvents) {
|
||||
DrawEvent(evt, false, buffer, options);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ private:
|
|||
|
||||
vector<DebugEventInfo> _snapshot;
|
||||
uint16_t _snapshotScanline;
|
||||
uint16_t _snapshotCycle;
|
||||
SimpleLock _lock;
|
||||
|
||||
bool _overscanMode = false;
|
||||
|
@ -33,6 +34,7 @@ private:
|
|||
uint16_t *_ppuBuffer;
|
||||
|
||||
void DrawEvent(DebugEventInfo &evt, bool drawBackground, uint32_t *buffer, EventViewerDisplayOptions &options);
|
||||
void FilterEvents(EventViewerDisplayOptions &options);
|
||||
|
||||
public:
|
||||
EventManager(Debugger *debugger, Cpu *cpu, Ppu *ppu, DmaController *dmaController);
|
||||
|
@ -41,8 +43,8 @@ public:
|
|||
void AddEvent(DebugEventType type, MemoryOperationInfo &operation, int32_t breakpointId = -1);
|
||||
void AddEvent(DebugEventType type);
|
||||
|
||||
void GetEvents(DebugEventInfo *eventArray, uint32_t &maxEventCount, bool getPreviousFrameData);
|
||||
uint32_t GetEventCount(bool getPreviousFrameData);
|
||||
void GetEvents(DebugEventInfo *eventArray, uint32_t &maxEventCount);
|
||||
uint32_t GetEventCount(EventViewerDisplayOptions options);
|
||||
void ClearFrameEvents();
|
||||
|
||||
uint32_t TakeEventSnapshot(EventViewerDisplayOptions options);
|
||||
|
@ -66,7 +68,7 @@ struct DebugEventInfo
|
|||
uint16_t Scanline;
|
||||
uint16_t Cycle;
|
||||
int16_t BreakpointId;
|
||||
uint8_t DmaChannel;
|
||||
int8_t DmaChannel;
|
||||
DmaChannelConfig DmaChannelInfo;
|
||||
};
|
||||
|
||||
|
|
|
@ -86,8 +86,8 @@ extern "C"
|
|||
DllExport void __stdcall GetSpritePreview(GetSpritePreviewOptions options, PpuState state, uint8_t* vram, uint8_t *oamRam, uint8_t *cgram, uint32_t *buffer) { GetDebugger()->GetPpuTools()->GetSpritePreview(options, state, vram, oamRam, cgram, buffer); }
|
||||
DllExport void __stdcall SetViewerUpdateTiming(uint32_t viewerId, uint16_t scanline, uint16_t cycle) { GetDebugger()->GetPpuTools()->SetViewerUpdateTiming(viewerId, scanline, cycle); }
|
||||
|
||||
DllExport void __stdcall GetDebugEvents(DebugEventInfo *infoArray, uint32_t &maxEventCount, bool getPreviousFrameData) { GetDebugger()->GetEventManager()->GetEvents(infoArray, maxEventCount, getPreviousFrameData); }
|
||||
DllExport uint32_t __stdcall GetDebugEventCount(bool getPreviousFrameData) { return GetDebugger()->GetEventManager()->GetEventCount(getPreviousFrameData); }
|
||||
DllExport void __stdcall GetDebugEvents(DebugEventInfo *infoArray, uint32_t &maxEventCount) { GetDebugger()->GetEventManager()->GetEvents(infoArray, maxEventCount); }
|
||||
DllExport uint32_t __stdcall GetDebugEventCount(EventViewerDisplayOptions options) { return GetDebugger()->GetEventManager()->GetEventCount(options); }
|
||||
DllExport void __stdcall GetEventViewerOutput(uint32_t *buffer, EventViewerDisplayOptions options) { GetDebugger()->GetEventManager()->GetDisplayBuffer(buffer, options); }
|
||||
DllExport void __stdcall GetEventViewerEvent(DebugEventInfo *evtInfo, uint16_t scanline, uint16_t cycle, EventViewerDisplayOptions options) { *evtInfo = GetDebugger()->GetEventManager()->GetEvent(scanline, cycle, options); }
|
||||
DllExport uint32_t __stdcall TakeEventSnapshot(EventViewerDisplayOptions options) { return GetDebugger()->GetEventManager()->TakeEventSnapshot(options); }
|
||||
|
|
|
@ -12,6 +12,7 @@ namespace Mesen.GUI.Debugger
|
|||
public ctrlColorPicker() : base()
|
||||
{
|
||||
this.BorderStyle = BorderStyle.FixedSingle;
|
||||
this.Cursor = Cursors.Hand;
|
||||
}
|
||||
|
||||
protected override void OnClick(EventArgs e)
|
||||
|
|
631
UI/Debugger/EventViewer/ctrlEventViewerFilters.Designer.cs
generated
Normal file
631
UI/Debugger/EventViewer/ctrlEventViewerFilters.Designer.cs
generated
Normal file
|
@ -0,0 +1,631 @@
|
|||
namespace Mesen.GUI.Debugger
|
||||
{
|
||||
partial class ctrlEventViewerFilters
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.grpOptions = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.picNmi = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowNmi = new System.Windows.Forms.CheckBox();
|
||||
this.picIrq = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowIrq = new System.Windows.Forms.CheckBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.picWramWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowWorkRamRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picWramReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowWorkRamRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.picCpuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowCpuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picCpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowCpuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.picApuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowApuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picApuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowApuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.picPpuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowPpuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.chkShowPpuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.lblPpuRegisters = new System.Windows.Forms.Label();
|
||||
this.picPpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowMarkedBreakpoints = new System.Windows.Forms.CheckBox();
|
||||
this.picMarkedBreakpoints = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowPreviousFrameEvents = new System.Windows.Forms.CheckBox();
|
||||
this.grpDmaFilters = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkDmaChannel0 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel1 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel2 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel3 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel4 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel5 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel6 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel7 = new System.Windows.Forms.CheckBox();
|
||||
this.grpOptions.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNmi)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picIrq)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).BeginInit();
|
||||
this.grpDmaFilters.SuspendLayout();
|
||||
this.tableLayoutPanel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpOptions
|
||||
//
|
||||
this.grpOptions.Controls.Add(this.tableLayoutPanel1);
|
||||
this.grpOptions.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.grpOptions.Location = new System.Drawing.Point(0, 0);
|
||||
this.grpOptions.Name = "grpOptions";
|
||||
this.grpOptions.Size = new System.Drawing.Size(260, 302);
|
||||
this.grpOptions.TabIndex = 3;
|
||||
this.grpOptions.TabStop = false;
|
||||
this.grpOptions.Text = "Show...";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 6;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.Controls.Add(this.picNmi, 5, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowNmi, 4, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picIrq, 2, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowIrq, 1, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 0, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picWramWrites, 5, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowWorkRamRegisterWrites, 4, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picWramReads, 2, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowWorkRamRegisterReads, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picCpuWrites, 5, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowCpuRegisterWrites, 4, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picCpuReads, 2, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowCpuRegisterReads, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picApuWrites, 5, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowApuRegisterWrites, 4, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picApuReads, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowApuRegisterReads, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picPpuWrites, 5, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPpuRegisterWrites, 4, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPpuRegisterReads, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblPpuRegisters, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picPpuReads, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowMarkedBreakpoints, 0, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picMarkedBreakpoints, 2, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPreviousFrameEvents, 0, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.grpDmaFilters, 0, 7);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 16);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 8;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(254, 283);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// picNmi
|
||||
//
|
||||
this.picNmi.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picNmi.Location = new System.Drawing.Point(238, 95);
|
||||
this.picNmi.Name = "picNmi";
|
||||
this.picNmi.Size = new System.Drawing.Size(14, 14);
|
||||
this.picNmi.TabIndex = 25;
|
||||
this.picNmi.TabStop = false;
|
||||
//
|
||||
// chkShowNmi
|
||||
//
|
||||
this.chkShowNmi.AutoSize = true;
|
||||
this.chkShowNmi.Location = new System.Drawing.Point(181, 95);
|
||||
this.chkShowNmi.Name = "chkShowNmi";
|
||||
this.chkShowNmi.Size = new System.Drawing.Size(46, 17);
|
||||
this.chkShowNmi.TabIndex = 24;
|
||||
this.chkShowNmi.Text = "NMI";
|
||||
this.chkShowNmi.UseVisualStyleBackColor = true;
|
||||
this.chkShowNmi.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picIrq
|
||||
//
|
||||
this.picIrq.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picIrq.Location = new System.Drawing.Point(146, 95);
|
||||
this.picIrq.Name = "picIrq";
|
||||
this.picIrq.Size = new System.Drawing.Size(14, 14);
|
||||
this.picIrq.TabIndex = 23;
|
||||
this.picIrq.TabStop = false;
|
||||
//
|
||||
// chkShowIrq
|
||||
//
|
||||
this.chkShowIrq.AutoSize = true;
|
||||
this.chkShowIrq.Location = new System.Drawing.Point(88, 95);
|
||||
this.chkShowIrq.Name = "chkShowIrq";
|
||||
this.chkShowIrq.Size = new System.Drawing.Size(45, 17);
|
||||
this.chkShowIrq.TabIndex = 22;
|
||||
this.chkShowIrq.Text = "IRQ";
|
||||
this.chkShowIrq.UseVisualStyleBackColor = true;
|
||||
this.chkShowIrq.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(3, 97);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(51, 13);
|
||||
this.label4.TabIndex = 21;
|
||||
this.label4.Text = "Interrupts";
|
||||
//
|
||||
// picWramWrites
|
||||
//
|
||||
this.picWramWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picWramWrites.Location = new System.Drawing.Point(238, 72);
|
||||
this.picWramWrites.Name = "picWramWrites";
|
||||
this.picWramWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picWramWrites.TabIndex = 20;
|
||||
this.picWramWrites.TabStop = false;
|
||||
//
|
||||
// chkShowWorkRamRegisterWrites
|
||||
//
|
||||
this.chkShowWorkRamRegisterWrites.AutoSize = true;
|
||||
this.chkShowWorkRamRegisterWrites.Location = new System.Drawing.Point(181, 72);
|
||||
this.chkShowWorkRamRegisterWrites.Name = "chkShowWorkRamRegisterWrites";
|
||||
this.chkShowWorkRamRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowWorkRamRegisterWrites.TabIndex = 19;
|
||||
this.chkShowWorkRamRegisterWrites.Text = "Write";
|
||||
this.chkShowWorkRamRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowWorkRamRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picWramReads
|
||||
//
|
||||
this.picWramReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picWramReads.Location = new System.Drawing.Point(146, 72);
|
||||
this.picWramReads.Name = "picWramReads";
|
||||
this.picWramReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picWramReads.TabIndex = 18;
|
||||
this.picWramReads.TabStop = false;
|
||||
//
|
||||
// chkShowWorkRamRegisterReads
|
||||
//
|
||||
this.chkShowWorkRamRegisterReads.AutoSize = true;
|
||||
this.chkShowWorkRamRegisterReads.Location = new System.Drawing.Point(88, 72);
|
||||
this.chkShowWorkRamRegisterReads.Name = "chkShowWorkRamRegisterReads";
|
||||
this.chkShowWorkRamRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowWorkRamRegisterReads.TabIndex = 17;
|
||||
this.chkShowWorkRamRegisterReads.Text = "Read";
|
||||
this.chkShowWorkRamRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowWorkRamRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(3, 74);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(73, 13);
|
||||
this.label3.TabIndex = 16;
|
||||
this.label3.Text = "WRAM Regs:";
|
||||
//
|
||||
// picCpuWrites
|
||||
//
|
||||
this.picCpuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picCpuWrites.Location = new System.Drawing.Point(238, 49);
|
||||
this.picCpuWrites.Name = "picCpuWrites";
|
||||
this.picCpuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picCpuWrites.TabIndex = 15;
|
||||
this.picCpuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowCpuRegisterWrites
|
||||
//
|
||||
this.chkShowCpuRegisterWrites.AutoSize = true;
|
||||
this.chkShowCpuRegisterWrites.Location = new System.Drawing.Point(181, 49);
|
||||
this.chkShowCpuRegisterWrites.Name = "chkShowCpuRegisterWrites";
|
||||
this.chkShowCpuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowCpuRegisterWrites.TabIndex = 14;
|
||||
this.chkShowCpuRegisterWrites.Text = "Write";
|
||||
this.chkShowCpuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowCpuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picCpuReads
|
||||
//
|
||||
this.picCpuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picCpuReads.Location = new System.Drawing.Point(146, 49);
|
||||
this.picCpuReads.Name = "picCpuReads";
|
||||
this.picCpuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picCpuReads.TabIndex = 13;
|
||||
this.picCpuReads.TabStop = false;
|
||||
//
|
||||
// chkShowCpuRegisterReads
|
||||
//
|
||||
this.chkShowCpuRegisterReads.AutoSize = true;
|
||||
this.chkShowCpuRegisterReads.Location = new System.Drawing.Point(88, 49);
|
||||
this.chkShowCpuRegisterReads.Name = "chkShowCpuRegisterReads";
|
||||
this.chkShowCpuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowCpuRegisterReads.TabIndex = 12;
|
||||
this.chkShowCpuRegisterReads.Text = "Read";
|
||||
this.chkShowCpuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowCpuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(3, 51);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(79, 13);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "CPU Registers:";
|
||||
//
|
||||
// picApuWrites
|
||||
//
|
||||
this.picApuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picApuWrites.Location = new System.Drawing.Point(238, 26);
|
||||
this.picApuWrites.Name = "picApuWrites";
|
||||
this.picApuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picApuWrites.TabIndex = 10;
|
||||
this.picApuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowApuRegisterWrites
|
||||
//
|
||||
this.chkShowApuRegisterWrites.AutoSize = true;
|
||||
this.chkShowApuRegisterWrites.Location = new System.Drawing.Point(181, 26);
|
||||
this.chkShowApuRegisterWrites.Name = "chkShowApuRegisterWrites";
|
||||
this.chkShowApuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowApuRegisterWrites.TabIndex = 9;
|
||||
this.chkShowApuRegisterWrites.Text = "Write";
|
||||
this.chkShowApuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowApuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picApuReads
|
||||
//
|
||||
this.picApuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picApuReads.Location = new System.Drawing.Point(146, 26);
|
||||
this.picApuReads.Name = "picApuReads";
|
||||
this.picApuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picApuReads.TabIndex = 8;
|
||||
this.picApuReads.TabStop = false;
|
||||
//
|
||||
// chkShowApuRegisterReads
|
||||
//
|
||||
this.chkShowApuRegisterReads.AutoSize = true;
|
||||
this.chkShowApuRegisterReads.Location = new System.Drawing.Point(88, 26);
|
||||
this.chkShowApuRegisterReads.Name = "chkShowApuRegisterReads";
|
||||
this.chkShowApuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowApuRegisterReads.TabIndex = 7;
|
||||
this.chkShowApuRegisterReads.Text = "Read";
|
||||
this.chkShowApuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowApuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(3, 28);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(79, 13);
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "APU Registers:";
|
||||
//
|
||||
// picPpuWrites
|
||||
//
|
||||
this.picPpuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picPpuWrites.Location = new System.Drawing.Point(238, 3);
|
||||
this.picPpuWrites.Name = "picPpuWrites";
|
||||
this.picPpuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picPpuWrites.TabIndex = 5;
|
||||
this.picPpuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowPpuRegisterWrites
|
||||
//
|
||||
this.chkShowPpuRegisterWrites.AutoSize = true;
|
||||
this.chkShowPpuRegisterWrites.Location = new System.Drawing.Point(181, 3);
|
||||
this.chkShowPpuRegisterWrites.Name = "chkShowPpuRegisterWrites";
|
||||
this.chkShowPpuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowPpuRegisterWrites.TabIndex = 2;
|
||||
this.chkShowPpuRegisterWrites.Text = "Write";
|
||||
this.chkShowPpuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowPpuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkShowPpuRegisterReads
|
||||
//
|
||||
this.chkShowPpuRegisterReads.AutoSize = true;
|
||||
this.chkShowPpuRegisterReads.Location = new System.Drawing.Point(88, 3);
|
||||
this.chkShowPpuRegisterReads.Name = "chkShowPpuRegisterReads";
|
||||
this.chkShowPpuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowPpuRegisterReads.TabIndex = 0;
|
||||
this.chkShowPpuRegisterReads.Text = "Read";
|
||||
this.chkShowPpuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowPpuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// lblPpuRegisters
|
||||
//
|
||||
this.lblPpuRegisters.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblPpuRegisters.AutoSize = true;
|
||||
this.lblPpuRegisters.Location = new System.Drawing.Point(3, 5);
|
||||
this.lblPpuRegisters.Name = "lblPpuRegisters";
|
||||
this.lblPpuRegisters.Size = new System.Drawing.Size(79, 13);
|
||||
this.lblPpuRegisters.TabIndex = 3;
|
||||
this.lblPpuRegisters.Text = "PPU Registers:";
|
||||
//
|
||||
// picPpuReads
|
||||
//
|
||||
this.picPpuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picPpuReads.Location = new System.Drawing.Point(146, 3);
|
||||
this.picPpuReads.Name = "picPpuReads";
|
||||
this.picPpuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picPpuReads.TabIndex = 4;
|
||||
this.picPpuReads.TabStop = false;
|
||||
//
|
||||
// chkShowMarkedBreakpoints
|
||||
//
|
||||
this.chkShowMarkedBreakpoints.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.chkShowMarkedBreakpoints, 2);
|
||||
this.chkShowMarkedBreakpoints.Location = new System.Drawing.Point(3, 118);
|
||||
this.chkShowMarkedBreakpoints.Name = "chkShowMarkedBreakpoints";
|
||||
this.chkShowMarkedBreakpoints.Size = new System.Drawing.Size(121, 17);
|
||||
this.chkShowMarkedBreakpoints.TabIndex = 26;
|
||||
this.chkShowMarkedBreakpoints.Text = "Marked Breakpoints";
|
||||
this.chkShowMarkedBreakpoints.UseVisualStyleBackColor = true;
|
||||
this.chkShowMarkedBreakpoints.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picMarkedBreakpoints
|
||||
//
|
||||
this.picMarkedBreakpoints.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picMarkedBreakpoints.Location = new System.Drawing.Point(146, 118);
|
||||
this.picMarkedBreakpoints.Name = "picMarkedBreakpoints";
|
||||
this.picMarkedBreakpoints.Size = new System.Drawing.Size(14, 14);
|
||||
this.picMarkedBreakpoints.TabIndex = 27;
|
||||
this.picMarkedBreakpoints.TabStop = false;
|
||||
//
|
||||
// chkShowPreviousFrameEvents
|
||||
//
|
||||
this.chkShowPreviousFrameEvents.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.chkShowPreviousFrameEvents, 6);
|
||||
this.chkShowPreviousFrameEvents.Location = new System.Drawing.Point(3, 148);
|
||||
this.chkShowPreviousFrameEvents.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
|
||||
this.chkShowPreviousFrameEvents.Name = "chkShowPreviousFrameEvents";
|
||||
this.chkShowPreviousFrameEvents.Size = new System.Drawing.Size(167, 17);
|
||||
this.chkShowPreviousFrameEvents.TabIndex = 28;
|
||||
this.chkShowPreviousFrameEvents.Text = "Show previous frame\'s events";
|
||||
this.chkShowPreviousFrameEvents.UseVisualStyleBackColor = true;
|
||||
this.chkShowPreviousFrameEvents.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// grpDmaFilters
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.grpDmaFilters, 6);
|
||||
this.grpDmaFilters.Controls.Add(this.tableLayoutPanel2);
|
||||
this.grpDmaFilters.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.grpDmaFilters.Location = new System.Drawing.Point(3, 171);
|
||||
this.grpDmaFilters.Name = "grpDmaFilters";
|
||||
this.grpDmaFilters.Size = new System.Drawing.Size(249, 108);
|
||||
this.grpDmaFilters.TabIndex = 29;
|
||||
this.grpDmaFilters.TabStop = false;
|
||||
this.grpDmaFilters.Text = "DMA Filters";
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
this.tableLayoutPanel2.ColumnCount = 2;
|
||||
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel0, 0, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel1, 0, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel2, 0, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel3, 0, 3);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel4, 1, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel5, 1, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel6, 1, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel7, 1, 3);
|
||||
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
this.tableLayoutPanel2.RowCount = 5;
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel2.Size = new System.Drawing.Size(243, 89);
|
||||
this.tableLayoutPanel2.TabIndex = 0;
|
||||
//
|
||||
// chkDmaChannel0
|
||||
//
|
||||
this.chkDmaChannel0.AutoSize = true;
|
||||
this.chkDmaChannel0.Location = new System.Drawing.Point(3, 3);
|
||||
this.chkDmaChannel0.Name = "chkDmaChannel0";
|
||||
this.chkDmaChannel0.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel0.TabIndex = 0;
|
||||
this.chkDmaChannel0.Text = "Channel 0";
|
||||
this.chkDmaChannel0.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel0.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel1
|
||||
//
|
||||
this.chkDmaChannel1.AutoSize = true;
|
||||
this.chkDmaChannel1.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkDmaChannel1.Name = "chkDmaChannel1";
|
||||
this.chkDmaChannel1.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel1.TabIndex = 2;
|
||||
this.chkDmaChannel1.Text = "Channel 1";
|
||||
this.chkDmaChannel1.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel1.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel2
|
||||
//
|
||||
this.chkDmaChannel2.AutoSize = true;
|
||||
this.chkDmaChannel2.Location = new System.Drawing.Point(3, 49);
|
||||
this.chkDmaChannel2.Name = "chkDmaChannel2";
|
||||
this.chkDmaChannel2.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel2.TabIndex = 4;
|
||||
this.chkDmaChannel2.Text = "Channel 2";
|
||||
this.chkDmaChannel2.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel2.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel3
|
||||
//
|
||||
this.chkDmaChannel3.AutoSize = true;
|
||||
this.chkDmaChannel3.Location = new System.Drawing.Point(3, 72);
|
||||
this.chkDmaChannel3.Name = "chkDmaChannel3";
|
||||
this.chkDmaChannel3.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel3.TabIndex = 6;
|
||||
this.chkDmaChannel3.Text = "Channel 3";
|
||||
this.chkDmaChannel3.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel3.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel4
|
||||
//
|
||||
this.chkDmaChannel4.AutoSize = true;
|
||||
this.chkDmaChannel4.Location = new System.Drawing.Point(124, 3);
|
||||
this.chkDmaChannel4.Name = "chkDmaChannel4";
|
||||
this.chkDmaChannel4.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel4.TabIndex = 1;
|
||||
this.chkDmaChannel4.Text = "Channel 4";
|
||||
this.chkDmaChannel4.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel4.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel5
|
||||
//
|
||||
this.chkDmaChannel5.AutoSize = true;
|
||||
this.chkDmaChannel5.Location = new System.Drawing.Point(124, 26);
|
||||
this.chkDmaChannel5.Name = "chkDmaChannel5";
|
||||
this.chkDmaChannel5.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel5.TabIndex = 3;
|
||||
this.chkDmaChannel5.Text = "Channel 5";
|
||||
this.chkDmaChannel5.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel5.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel6
|
||||
//
|
||||
this.chkDmaChannel6.AutoSize = true;
|
||||
this.chkDmaChannel6.Location = new System.Drawing.Point(124, 49);
|
||||
this.chkDmaChannel6.Name = "chkDmaChannel6";
|
||||
this.chkDmaChannel6.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel6.TabIndex = 5;
|
||||
this.chkDmaChannel6.Text = "Channel 6";
|
||||
this.chkDmaChannel6.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel6.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel7
|
||||
//
|
||||
this.chkDmaChannel7.AutoSize = true;
|
||||
this.chkDmaChannel7.Location = new System.Drawing.Point(124, 72);
|
||||
this.chkDmaChannel7.Name = "chkDmaChannel7";
|
||||
this.chkDmaChannel7.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel7.TabIndex = 7;
|
||||
this.chkDmaChannel7.Text = "Channel 7";
|
||||
this.chkDmaChannel7.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel7.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// ctrlEventViewerFilters
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.grpOptions);
|
||||
this.Name = "ctrlEventViewerFilters";
|
||||
this.Size = new System.Drawing.Size(260, 302);
|
||||
this.grpOptions.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNmi)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picIrq)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).EndInit();
|
||||
this.grpDmaFilters.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox grpOptions;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private ctrlColorPicker picNmi;
|
||||
private System.Windows.Forms.CheckBox chkShowNmi;
|
||||
private ctrlColorPicker picIrq;
|
||||
private System.Windows.Forms.CheckBox chkShowIrq;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private ctrlColorPicker picWramWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowWorkRamRegisterWrites;
|
||||
private ctrlColorPicker picWramReads;
|
||||
private System.Windows.Forms.CheckBox chkShowWorkRamRegisterReads;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private ctrlColorPicker picCpuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowCpuRegisterWrites;
|
||||
private ctrlColorPicker picCpuReads;
|
||||
private System.Windows.Forms.CheckBox chkShowCpuRegisterReads;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private ctrlColorPicker picApuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowApuRegisterWrites;
|
||||
private ctrlColorPicker picApuReads;
|
||||
private System.Windows.Forms.CheckBox chkShowApuRegisterReads;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private ctrlColorPicker picPpuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowPpuRegisterWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowPpuRegisterReads;
|
||||
private System.Windows.Forms.Label lblPpuRegisters;
|
||||
private ctrlColorPicker picPpuReads;
|
||||
private System.Windows.Forms.CheckBox chkShowMarkedBreakpoints;
|
||||
private ctrlColorPicker picMarkedBreakpoints;
|
||||
private System.Windows.Forms.CheckBox chkShowPreviousFrameEvents;
|
||||
private System.Windows.Forms.GroupBox grpDmaFilters;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel0;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel1;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel2;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel3;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel4;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel5;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel6;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel7;
|
||||
}
|
||||
}
|
84
UI/Debugger/EventViewer/ctrlEventViewerFilters.cs
Normal file
84
UI/Debugger/EventViewer/ctrlEventViewerFilters.cs
Normal file
|
@ -0,0 +1,84 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Mesen.GUI.Forms;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Debugger
|
||||
{
|
||||
public partial class ctrlEventViewerFilters : BaseControl
|
||||
{
|
||||
public event EventHandler OptionsChanged;
|
||||
|
||||
private EntityBinder _entityBinder = new EntityBinder();
|
||||
|
||||
public ctrlEventViewerFilters()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void Init()
|
||||
{
|
||||
_entityBinder.Entity = ConfigManager.Config.Debug.EventViewer;
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterReadColor), picApuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterWriteColor), picApuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterReadColor), picCpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterWriteColor), picCpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.IrqColor), picIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.BreakpointColor), picMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.NmiColor), picNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterReadColor), picPpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterWriteColor), picPpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterReadColor), picWramReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterWriteColor), picWramWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterReads), chkShowApuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterWrites), chkShowApuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterReads), chkShowCpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowIrq), chkShowIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowNmi), chkShowNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterReads), chkShowPpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel0), chkDmaChannel0);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel1), chkDmaChannel1);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel2), chkDmaChannel2);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel3), chkDmaChannel3);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel4), chkDmaChannel4);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel5), chkDmaChannel5);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel6), chkDmaChannel6);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel7), chkDmaChannel7);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
|
||||
|
||||
_entityBinder.UpdateUI();
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
if(!IsDesignMode) {
|
||||
_entityBinder.UpdateObject();
|
||||
ConfigManager.ApplyChanges();
|
||||
}
|
||||
|
||||
base.OnHandleDestroyed(e);
|
||||
}
|
||||
|
||||
private void chkOption_Click(object sender, EventArgs e)
|
||||
{
|
||||
_entityBinder.UpdateObject();
|
||||
this.OptionsChanged?.Invoke(this, e);
|
||||
}
|
||||
}
|
||||
}
|
120
UI/Debugger/EventViewer/ctrlEventViewerFilters.resx
Normal file
120
UI/Debugger/EventViewer/ctrlEventViewerFilters.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
141
UI/Debugger/EventViewer/ctrlEventViewerListView.Designer.cs
generated
Normal file
141
UI/Debugger/EventViewer/ctrlEventViewerListView.Designer.cs
generated
Normal file
|
@ -0,0 +1,141 @@
|
|||
namespace Mesen.GUI.Debugger
|
||||
{
|
||||
partial class ctrlEventViewerListView
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.lstEvents = new Mesen.GUI.Controls.DoubleBufferedListView();
|
||||
this.colProgramCounter = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colScanline = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colCycle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colEventType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colAddress = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colDetails = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ctxMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.mnuCopy = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ctxMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lstEvents
|
||||
//
|
||||
this.lstEvents.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.colProgramCounter,
|
||||
this.colScanline,
|
||||
this.colCycle,
|
||||
this.colEventType,
|
||||
this.colAddress,
|
||||
this.colValue,
|
||||
this.colDetails});
|
||||
this.lstEvents.ContextMenuStrip = this.ctxMenu;
|
||||
this.lstEvents.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lstEvents.FullRowSelect = true;
|
||||
this.lstEvents.Location = new System.Drawing.Point(0, 0);
|
||||
this.lstEvents.Name = "lstEvents";
|
||||
this.lstEvents.Size = new System.Drawing.Size(749, 205);
|
||||
this.lstEvents.TabIndex = 0;
|
||||
this.lstEvents.UseCompatibleStateImageBehavior = false;
|
||||
this.lstEvents.View = System.Windows.Forms.View.Details;
|
||||
this.lstEvents.VirtualMode = true;
|
||||
this.lstEvents.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lstEvents_ColumnClick);
|
||||
this.lstEvents.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.lstEvents_RetrieveVirtualItem);
|
||||
//
|
||||
// colProgramCounter
|
||||
//
|
||||
this.colProgramCounter.Text = "PC";
|
||||
this.colProgramCounter.Width = 50;
|
||||
//
|
||||
// colScanline
|
||||
//
|
||||
this.colScanline.Text = "Scanline";
|
||||
//
|
||||
// colCycle
|
||||
//
|
||||
this.colCycle.Text = "Cycle";
|
||||
this.colCycle.Width = 45;
|
||||
//
|
||||
// colEventType
|
||||
//
|
||||
this.colEventType.Text = "Type";
|
||||
this.colEventType.Width = 135;
|
||||
//
|
||||
// colAddress
|
||||
//
|
||||
this.colAddress.Text = "Address";
|
||||
this.colAddress.Width = 65;
|
||||
//
|
||||
// colValue
|
||||
//
|
||||
this.colValue.Text = "Value";
|
||||
this.colValue.Width = 51;
|
||||
//
|
||||
// colDetails
|
||||
//
|
||||
this.colDetails.Text = "Details";
|
||||
this.colDetails.Width = 289;
|
||||
//
|
||||
// ctxMenu
|
||||
//
|
||||
this.ctxMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuCopy});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(170, 48);
|
||||
//
|
||||
// mnuCopy
|
||||
//
|
||||
this.mnuCopy.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
this.mnuCopy.Name = "mnuCopy";
|
||||
this.mnuCopy.Size = new System.Drawing.Size(169, 22);
|
||||
this.mnuCopy.Text = "Copy List Content";
|
||||
this.mnuCopy.Click += new System.EventHandler(this.mnuCopy_Click);
|
||||
//
|
||||
// ctrlEventViewerListView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.lstEvents);
|
||||
this.Name = "ctrlEventViewerListView";
|
||||
this.Size = new System.Drawing.Size(749, 205);
|
||||
this.ctxMenu.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GUI.Controls.DoubleBufferedListView lstEvents;
|
||||
private System.Windows.Forms.ColumnHeader colScanline;
|
||||
private System.Windows.Forms.ColumnHeader colCycle;
|
||||
private System.Windows.Forms.ColumnHeader colEventType;
|
||||
private System.Windows.Forms.ColumnHeader colDetails;
|
||||
private System.Windows.Forms.ColumnHeader colAddress;
|
||||
private System.Windows.Forms.ColumnHeader colValue;
|
||||
private System.Windows.Forms.ColumnHeader colProgramCounter;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopy;
|
||||
}
|
||||
}
|
172
UI/Debugger/EventViewer/ctrlEventViewerListView.cs
Normal file
172
UI/Debugger/EventViewer/ctrlEventViewerListView.cs
Normal file
|
@ -0,0 +1,172 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
using Mesen.GUI.Controls;
|
||||
using Mesen.GUI.Forms;
|
||||
using Mesen.GUI.Config;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace Mesen.GUI.Debugger
|
||||
{
|
||||
public partial class ctrlEventViewerListView : BaseControl
|
||||
{
|
||||
private List<DebugEventInfo> _debugEvents = new List<DebugEventInfo>();
|
||||
private ReadOnlyCollection<Breakpoint> _breakpoints = null;
|
||||
private eSortColumn _sortColumn = eSortColumn.Scanline;
|
||||
private bool _sortAscending = true;
|
||||
|
||||
public ctrlEventViewerListView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
if(!IsDesignMode) {
|
||||
mnuCopy.InitShortcut(this, nameof(DebuggerShortcutsConfig.Copy));
|
||||
}
|
||||
}
|
||||
|
||||
public void RefreshViewer()
|
||||
{
|
||||
_breakpoints = BreakpointManager.Breakpoints;
|
||||
EventViewerDisplayOptions options = ConfigManager.Config.Debug.EventViewer.GetInteropOptions();
|
||||
DebugEventInfo[] eventInfoArray = DebugApi.GetDebugEvents(options);
|
||||
|
||||
lstEvents.BeginUpdate();
|
||||
_debugEvents = new List<DebugEventInfo>(eventInfoArray);
|
||||
SortData();
|
||||
lstEvents.VirtualListSize = _debugEvents.Count;
|
||||
lstEvents.EndUpdate();
|
||||
}
|
||||
|
||||
private ListViewItem CreateListViewItem(int index)
|
||||
{
|
||||
DebugEventInfo evt = _debugEvents[index];
|
||||
bool isDma = evt.Operation.Type == MemoryOperationType.DmaWrite || evt.Operation.Type == MemoryOperationType.DmaRead;
|
||||
|
||||
string details = "";
|
||||
if(evt.Type == DebugEventType.Breakpoint) {
|
||||
if(evt.BreakpointId >= 0 && evt.BreakpointId < _breakpoints.Count) {
|
||||
Breakpoint bp = _breakpoints[evt.BreakpointId];
|
||||
details += " Type: " + bp.ToReadableType();
|
||||
details += " Addresses: " + bp.GetAddressString(true);
|
||||
if(bp.Condition.Length > 0) {
|
||||
details += " Condition: " + bp.Condition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isDma) {
|
||||
bool indirectHdma = false;
|
||||
if((evt.DmaChannel & ctrlEventViewerPpuView.HdmaChannelFlag) != 0) {
|
||||
indirectHdma = evt.DmaChannelInfo.HdmaIndirectAddressing;
|
||||
details += "HDMA #" + (evt.DmaChannel & 0x07).ToString();
|
||||
details += indirectHdma ? " (indirect)" : "";
|
||||
} else {
|
||||
details += "DMA #" + (evt.DmaChannel & 0x07).ToString();
|
||||
}
|
||||
|
||||
int aBusAddress;
|
||||
if(indirectHdma) {
|
||||
aBusAddress = (evt.DmaChannelInfo.SrcBank << 16) | evt.DmaChannelInfo.TransferSize;
|
||||
} else {
|
||||
aBusAddress = (evt.DmaChannelInfo.SrcBank << 16) | evt.DmaChannelInfo.SrcAddress;
|
||||
}
|
||||
|
||||
if(!evt.DmaChannelInfo.InvertDirection) {
|
||||
details += " - $" + aBusAddress.ToString("X4") + " -> $" + (0x2100 | evt.DmaChannelInfo.DestAddress).ToString("X4");
|
||||
} else {
|
||||
details += " - $" + aBusAddress.ToString("X4") + " <- $" + (0x2100 | evt.DmaChannelInfo.DestAddress).ToString("X4");
|
||||
}
|
||||
}
|
||||
|
||||
return new ListViewItem(new string[] {
|
||||
evt.ProgramCounter.ToString("X4"),
|
||||
evt.Scanline.ToString(),
|
||||
evt.Cycle.ToString(),
|
||||
evt.Type.ToString(),
|
||||
evt.Type == DebugEventType.Register ? ("$" + evt.Operation.Address.ToString("X4")) : "",
|
||||
evt.Type == DebugEventType.Register ? ("$" + evt.Operation.Value.ToString("X2")) : "",
|
||||
details
|
||||
});
|
||||
}
|
||||
|
||||
private void lstEvents_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
|
||||
{
|
||||
e.Item = CreateListViewItem(e.ItemIndex);
|
||||
}
|
||||
|
||||
private void lstEvents_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
eSortColumn sortColumn = (eSortColumn)e.Column;
|
||||
if(sortColumn == _sortColumn) {
|
||||
_sortAscending = !_sortAscending;
|
||||
} else {
|
||||
_sortColumn = sortColumn;
|
||||
_sortAscending = true;
|
||||
}
|
||||
|
||||
lstEvents.BeginUpdate();
|
||||
SortData();
|
||||
lstEvents.VirtualListSize = _debugEvents.Count;
|
||||
lstEvents.EndUpdate();
|
||||
}
|
||||
|
||||
private void SortData()
|
||||
{
|
||||
_debugEvents.Sort((DebugEventInfo a, DebugEventInfo b) => {
|
||||
int result = 0;
|
||||
switch(_sortColumn) {
|
||||
case eSortColumn.PC: result = ((int)a.ProgramCounter - (int)b.ProgramCounter); break;
|
||||
case eSortColumn.Scanline: result = ((int)a.Scanline - (int)b.Scanline); break;
|
||||
case eSortColumn.Cycle: result = ((int)a.Cycle - (int)b.Cycle); break;
|
||||
case eSortColumn.Type: result = ((int)a.Type - (int)b.Type); break;
|
||||
case eSortColumn.Address: result = ((int)a.Operation.Address - (int)b.Operation.Address); break;
|
||||
case eSortColumn.Value: result = ((int)a.Operation.Value - (int)b.Operation.Value); break;
|
||||
}
|
||||
|
||||
if(result == 0) {
|
||||
result = ((int)a.Cycle - (int)b.Cycle);
|
||||
}
|
||||
return _sortAscending ? result : -result;
|
||||
});
|
||||
}
|
||||
|
||||
private void CopyList()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for(int i = 0; i < _debugEvents.Count; i++) {
|
||||
foreach(ListViewItem.ListViewSubItem subItem in CreateListViewItem(i).SubItems) {
|
||||
sb.Append(subItem.Text);
|
||||
sb.Append("\t");
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
Clipboard.SetText(sb.ToString());
|
||||
}
|
||||
|
||||
private void mnuCopy_Click(object sender, EventArgs e)
|
||||
{
|
||||
CopyList();
|
||||
}
|
||||
|
||||
private enum eSortColumn
|
||||
{
|
||||
PC,
|
||||
Scanline,
|
||||
Cycle,
|
||||
Type,
|
||||
Address,
|
||||
Value
|
||||
}
|
||||
}
|
||||
}
|
123
UI/Debugger/EventViewer/ctrlEventViewerListView.resx
Normal file
123
UI/Debugger/EventViewer/ctrlEventViewerListView.resx
Normal file
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ctxMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -31,62 +31,7 @@ namespace Mesen.GUI.Debugger
|
|||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.tmrOverlay = new System.Windows.Forms.Timer(this.components);
|
||||
this.grpOptions = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.picNmi = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowNmi = new System.Windows.Forms.CheckBox();
|
||||
this.picIrq = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowIrq = new System.Windows.Forms.CheckBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.picWramWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowWorkRamRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picWramReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowWorkRamRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.picCpuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowCpuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picCpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowCpuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.picApuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowApuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.picApuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowApuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.picPpuWrites = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowPpuRegisterWrites = new System.Windows.Forms.CheckBox();
|
||||
this.chkShowPpuRegisterReads = new System.Windows.Forms.CheckBox();
|
||||
this.lblPpuRegisters = new System.Windows.Forms.Label();
|
||||
this.picPpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowMarkedBreakpoints = new System.Windows.Forms.CheckBox();
|
||||
this.picMarkedBreakpoints = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowPreviousFrameEvents = new System.Windows.Forms.CheckBox();
|
||||
this.grpDmaFilters = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkDmaChannel0 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel1 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel2 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel3 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel4 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel5 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel6 = new System.Windows.Forms.CheckBox();
|
||||
this.chkDmaChannel7 = new System.Windows.Forms.CheckBox();
|
||||
this.picViewer = new Mesen.GUI.Debugger.PpuViewer.ctrlImagePanel();
|
||||
this.grpOptions.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNmi)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picIrq)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuWrites)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuReads)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).BeginInit();
|
||||
this.grpDmaFilters.SuspendLayout();
|
||||
this.tableLayoutPanel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tmrOverlay
|
||||
|
@ -94,479 +39,6 @@ namespace Mesen.GUI.Debugger
|
|||
this.tmrOverlay.Interval = 50;
|
||||
this.tmrOverlay.Tick += new System.EventHandler(this.tmrOverlay_Tick);
|
||||
//
|
||||
// grpOptions
|
||||
//
|
||||
this.grpOptions.Controls.Add(this.tableLayoutPanel1);
|
||||
this.grpOptions.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.grpOptions.Location = new System.Drawing.Point(669, 0);
|
||||
this.grpOptions.Name = "grpOptions";
|
||||
this.grpOptions.Size = new System.Drawing.Size(278, 529);
|
||||
this.grpOptions.TabIndex = 2;
|
||||
this.grpOptions.TabStop = false;
|
||||
this.grpOptions.Text = "Show...";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 6;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.Controls.Add(this.picNmi, 5, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowNmi, 4, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picIrq, 2, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowIrq, 1, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 0, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picWramWrites, 5, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowWorkRamRegisterWrites, 4, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picWramReads, 2, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowWorkRamRegisterReads, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picCpuWrites, 5, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowCpuRegisterWrites, 4, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picCpuReads, 2, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowCpuRegisterReads, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picApuWrites, 5, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowApuRegisterWrites, 4, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picApuReads, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowApuRegisterReads, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picPpuWrites, 5, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPpuRegisterWrites, 4, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPpuRegisterReads, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblPpuRegisters, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picPpuReads, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowMarkedBreakpoints, 0, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picMarkedBreakpoints, 2, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkShowPreviousFrameEvents, 0, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.grpDmaFilters, 0, 7);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 16);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 8;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(272, 510);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// picNmi
|
||||
//
|
||||
this.picNmi.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picNmi.Location = new System.Drawing.Point(238, 95);
|
||||
this.picNmi.Name = "picNmi";
|
||||
this.picNmi.Size = new System.Drawing.Size(14, 14);
|
||||
this.picNmi.TabIndex = 25;
|
||||
this.picNmi.TabStop = false;
|
||||
//
|
||||
// chkShowNmi
|
||||
//
|
||||
this.chkShowNmi.AutoSize = true;
|
||||
this.chkShowNmi.Location = new System.Drawing.Point(181, 95);
|
||||
this.chkShowNmi.Name = "chkShowNmi";
|
||||
this.chkShowNmi.Size = new System.Drawing.Size(46, 17);
|
||||
this.chkShowNmi.TabIndex = 24;
|
||||
this.chkShowNmi.Text = "NMI";
|
||||
this.chkShowNmi.UseVisualStyleBackColor = true;
|
||||
this.chkShowNmi.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picIrq
|
||||
//
|
||||
this.picIrq.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picIrq.Location = new System.Drawing.Point(146, 95);
|
||||
this.picIrq.Name = "picIrq";
|
||||
this.picIrq.Size = new System.Drawing.Size(14, 14);
|
||||
this.picIrq.TabIndex = 23;
|
||||
this.picIrq.TabStop = false;
|
||||
//
|
||||
// chkShowIrq
|
||||
//
|
||||
this.chkShowIrq.AutoSize = true;
|
||||
this.chkShowIrq.Location = new System.Drawing.Point(88, 95);
|
||||
this.chkShowIrq.Name = "chkShowIrq";
|
||||
this.chkShowIrq.Size = new System.Drawing.Size(45, 17);
|
||||
this.chkShowIrq.TabIndex = 22;
|
||||
this.chkShowIrq.Text = "IRQ";
|
||||
this.chkShowIrq.UseVisualStyleBackColor = true;
|
||||
this.chkShowIrq.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(3, 97);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(51, 13);
|
||||
this.label4.TabIndex = 21;
|
||||
this.label4.Text = "Interrupts";
|
||||
//
|
||||
// picWramWrites
|
||||
//
|
||||
this.picWramWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picWramWrites.Location = new System.Drawing.Point(238, 72);
|
||||
this.picWramWrites.Name = "picWramWrites";
|
||||
this.picWramWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picWramWrites.TabIndex = 20;
|
||||
this.picWramWrites.TabStop = false;
|
||||
//
|
||||
// chkShowWorkRamRegisterWrites
|
||||
//
|
||||
this.chkShowWorkRamRegisterWrites.AutoSize = true;
|
||||
this.chkShowWorkRamRegisterWrites.Location = new System.Drawing.Point(181, 72);
|
||||
this.chkShowWorkRamRegisterWrites.Name = "chkShowWorkRamRegisterWrites";
|
||||
this.chkShowWorkRamRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowWorkRamRegisterWrites.TabIndex = 19;
|
||||
this.chkShowWorkRamRegisterWrites.Text = "Write";
|
||||
this.chkShowWorkRamRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowWorkRamRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picWramReads
|
||||
//
|
||||
this.picWramReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picWramReads.Location = new System.Drawing.Point(146, 72);
|
||||
this.picWramReads.Name = "picWramReads";
|
||||
this.picWramReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picWramReads.TabIndex = 18;
|
||||
this.picWramReads.TabStop = false;
|
||||
//
|
||||
// chkShowWorkRamRegisterReads
|
||||
//
|
||||
this.chkShowWorkRamRegisterReads.AutoSize = true;
|
||||
this.chkShowWorkRamRegisterReads.Location = new System.Drawing.Point(88, 72);
|
||||
this.chkShowWorkRamRegisterReads.Name = "chkShowWorkRamRegisterReads";
|
||||
this.chkShowWorkRamRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowWorkRamRegisterReads.TabIndex = 17;
|
||||
this.chkShowWorkRamRegisterReads.Text = "Read";
|
||||
this.chkShowWorkRamRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowWorkRamRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(3, 74);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(73, 13);
|
||||
this.label3.TabIndex = 16;
|
||||
this.label3.Text = "WRAM Regs:";
|
||||
//
|
||||
// picCpuWrites
|
||||
//
|
||||
this.picCpuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picCpuWrites.Location = new System.Drawing.Point(238, 49);
|
||||
this.picCpuWrites.Name = "picCpuWrites";
|
||||
this.picCpuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picCpuWrites.TabIndex = 15;
|
||||
this.picCpuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowCpuRegisterWrites
|
||||
//
|
||||
this.chkShowCpuRegisterWrites.AutoSize = true;
|
||||
this.chkShowCpuRegisterWrites.Location = new System.Drawing.Point(181, 49);
|
||||
this.chkShowCpuRegisterWrites.Name = "chkShowCpuRegisterWrites";
|
||||
this.chkShowCpuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowCpuRegisterWrites.TabIndex = 14;
|
||||
this.chkShowCpuRegisterWrites.Text = "Write";
|
||||
this.chkShowCpuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowCpuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picCpuReads
|
||||
//
|
||||
this.picCpuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picCpuReads.Location = new System.Drawing.Point(146, 49);
|
||||
this.picCpuReads.Name = "picCpuReads";
|
||||
this.picCpuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picCpuReads.TabIndex = 13;
|
||||
this.picCpuReads.TabStop = false;
|
||||
//
|
||||
// chkShowCpuRegisterReads
|
||||
//
|
||||
this.chkShowCpuRegisterReads.AutoSize = true;
|
||||
this.chkShowCpuRegisterReads.Location = new System.Drawing.Point(88, 49);
|
||||
this.chkShowCpuRegisterReads.Name = "chkShowCpuRegisterReads";
|
||||
this.chkShowCpuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowCpuRegisterReads.TabIndex = 12;
|
||||
this.chkShowCpuRegisterReads.Text = "Read";
|
||||
this.chkShowCpuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowCpuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(3, 51);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(79, 13);
|
||||
this.label2.TabIndex = 11;
|
||||
this.label2.Text = "CPU Registers:";
|
||||
//
|
||||
// picApuWrites
|
||||
//
|
||||
this.picApuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picApuWrites.Location = new System.Drawing.Point(238, 26);
|
||||
this.picApuWrites.Name = "picApuWrites";
|
||||
this.picApuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picApuWrites.TabIndex = 10;
|
||||
this.picApuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowApuRegisterWrites
|
||||
//
|
||||
this.chkShowApuRegisterWrites.AutoSize = true;
|
||||
this.chkShowApuRegisterWrites.Location = new System.Drawing.Point(181, 26);
|
||||
this.chkShowApuRegisterWrites.Name = "chkShowApuRegisterWrites";
|
||||
this.chkShowApuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowApuRegisterWrites.TabIndex = 9;
|
||||
this.chkShowApuRegisterWrites.Text = "Write";
|
||||
this.chkShowApuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowApuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picApuReads
|
||||
//
|
||||
this.picApuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picApuReads.Location = new System.Drawing.Point(146, 26);
|
||||
this.picApuReads.Name = "picApuReads";
|
||||
this.picApuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picApuReads.TabIndex = 8;
|
||||
this.picApuReads.TabStop = false;
|
||||
//
|
||||
// chkShowApuRegisterReads
|
||||
//
|
||||
this.chkShowApuRegisterReads.AutoSize = true;
|
||||
this.chkShowApuRegisterReads.Location = new System.Drawing.Point(88, 26);
|
||||
this.chkShowApuRegisterReads.Name = "chkShowApuRegisterReads";
|
||||
this.chkShowApuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowApuRegisterReads.TabIndex = 7;
|
||||
this.chkShowApuRegisterReads.Text = "Read";
|
||||
this.chkShowApuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowApuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(3, 28);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(79, 13);
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "APU Registers:";
|
||||
//
|
||||
// picPpuWrites
|
||||
//
|
||||
this.picPpuWrites.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picPpuWrites.Location = new System.Drawing.Point(238, 3);
|
||||
this.picPpuWrites.Name = "picPpuWrites";
|
||||
this.picPpuWrites.Size = new System.Drawing.Size(14, 14);
|
||||
this.picPpuWrites.TabIndex = 5;
|
||||
this.picPpuWrites.TabStop = false;
|
||||
//
|
||||
// chkShowPpuRegisterWrites
|
||||
//
|
||||
this.chkShowPpuRegisterWrites.AutoSize = true;
|
||||
this.chkShowPpuRegisterWrites.Location = new System.Drawing.Point(181, 3);
|
||||
this.chkShowPpuRegisterWrites.Name = "chkShowPpuRegisterWrites";
|
||||
this.chkShowPpuRegisterWrites.Size = new System.Drawing.Size(51, 17);
|
||||
this.chkShowPpuRegisterWrites.TabIndex = 2;
|
||||
this.chkShowPpuRegisterWrites.Text = "Write";
|
||||
this.chkShowPpuRegisterWrites.UseVisualStyleBackColor = true;
|
||||
this.chkShowPpuRegisterWrites.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkShowPpuRegisterReads
|
||||
//
|
||||
this.chkShowPpuRegisterReads.AutoSize = true;
|
||||
this.chkShowPpuRegisterReads.Location = new System.Drawing.Point(88, 3);
|
||||
this.chkShowPpuRegisterReads.Name = "chkShowPpuRegisterReads";
|
||||
this.chkShowPpuRegisterReads.Size = new System.Drawing.Size(52, 17);
|
||||
this.chkShowPpuRegisterReads.TabIndex = 0;
|
||||
this.chkShowPpuRegisterReads.Text = "Read";
|
||||
this.chkShowPpuRegisterReads.UseVisualStyleBackColor = true;
|
||||
this.chkShowPpuRegisterReads.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// lblPpuRegisters
|
||||
//
|
||||
this.lblPpuRegisters.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblPpuRegisters.AutoSize = true;
|
||||
this.lblPpuRegisters.Location = new System.Drawing.Point(3, 5);
|
||||
this.lblPpuRegisters.Name = "lblPpuRegisters";
|
||||
this.lblPpuRegisters.Size = new System.Drawing.Size(79, 13);
|
||||
this.lblPpuRegisters.TabIndex = 3;
|
||||
this.lblPpuRegisters.Text = "PPU Registers:";
|
||||
//
|
||||
// picPpuReads
|
||||
//
|
||||
this.picPpuReads.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picPpuReads.Location = new System.Drawing.Point(146, 3);
|
||||
this.picPpuReads.Name = "picPpuReads";
|
||||
this.picPpuReads.Size = new System.Drawing.Size(14, 14);
|
||||
this.picPpuReads.TabIndex = 4;
|
||||
this.picPpuReads.TabStop = false;
|
||||
//
|
||||
// chkShowMarkedBreakpoints
|
||||
//
|
||||
this.chkShowMarkedBreakpoints.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.chkShowMarkedBreakpoints, 2);
|
||||
this.chkShowMarkedBreakpoints.Location = new System.Drawing.Point(3, 118);
|
||||
this.chkShowMarkedBreakpoints.Name = "chkShowMarkedBreakpoints";
|
||||
this.chkShowMarkedBreakpoints.Size = new System.Drawing.Size(121, 17);
|
||||
this.chkShowMarkedBreakpoints.TabIndex = 26;
|
||||
this.chkShowMarkedBreakpoints.Text = "Marked Breakpoints";
|
||||
this.chkShowMarkedBreakpoints.UseVisualStyleBackColor = true;
|
||||
this.chkShowMarkedBreakpoints.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picMarkedBreakpoints
|
||||
//
|
||||
this.picMarkedBreakpoints.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picMarkedBreakpoints.Location = new System.Drawing.Point(146, 118);
|
||||
this.picMarkedBreakpoints.Name = "picMarkedBreakpoints";
|
||||
this.picMarkedBreakpoints.Size = new System.Drawing.Size(14, 14);
|
||||
this.picMarkedBreakpoints.TabIndex = 27;
|
||||
this.picMarkedBreakpoints.TabStop = false;
|
||||
//
|
||||
// chkShowPreviousFrameEvents
|
||||
//
|
||||
this.chkShowPreviousFrameEvents.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.chkShowPreviousFrameEvents, 6);
|
||||
this.chkShowPreviousFrameEvents.Location = new System.Drawing.Point(3, 148);
|
||||
this.chkShowPreviousFrameEvents.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
|
||||
this.chkShowPreviousFrameEvents.Name = "chkShowPreviousFrameEvents";
|
||||
this.chkShowPreviousFrameEvents.Size = new System.Drawing.Size(167, 17);
|
||||
this.chkShowPreviousFrameEvents.TabIndex = 28;
|
||||
this.chkShowPreviousFrameEvents.Text = "Show previous frame\'s events";
|
||||
this.chkShowPreviousFrameEvents.UseVisualStyleBackColor = true;
|
||||
this.chkShowPreviousFrameEvents.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// grpDmaFilters
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.grpDmaFilters, 6);
|
||||
this.grpDmaFilters.Controls.Add(this.tableLayoutPanel2);
|
||||
this.grpDmaFilters.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.grpDmaFilters.Location = new System.Drawing.Point(3, 171);
|
||||
this.grpDmaFilters.Name = "grpDmaFilters";
|
||||
this.grpDmaFilters.Size = new System.Drawing.Size(266, 336);
|
||||
this.grpDmaFilters.TabIndex = 29;
|
||||
this.grpDmaFilters.TabStop = false;
|
||||
this.grpDmaFilters.Text = "DMA Filters";
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
this.tableLayoutPanel2.ColumnCount = 2;
|
||||
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel0, 0, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel1, 0, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel2, 0, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel3, 0, 3);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel4, 1, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel5, 1, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel6, 1, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.chkDmaChannel7, 1, 3);
|
||||
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
this.tableLayoutPanel2.RowCount = 5;
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel2.Size = new System.Drawing.Size(260, 94);
|
||||
this.tableLayoutPanel2.TabIndex = 0;
|
||||
//
|
||||
// chkDmaChannel0
|
||||
//
|
||||
this.chkDmaChannel0.AutoSize = true;
|
||||
this.chkDmaChannel0.Location = new System.Drawing.Point(3, 3);
|
||||
this.chkDmaChannel0.Name = "chkDmaChannel0";
|
||||
this.chkDmaChannel0.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel0.TabIndex = 0;
|
||||
this.chkDmaChannel0.Text = "Channel 0";
|
||||
this.chkDmaChannel0.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel0.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel1
|
||||
//
|
||||
this.chkDmaChannel1.AutoSize = true;
|
||||
this.chkDmaChannel1.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkDmaChannel1.Name = "chkDmaChannel1";
|
||||
this.chkDmaChannel1.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel1.TabIndex = 2;
|
||||
this.chkDmaChannel1.Text = "Channel 1";
|
||||
this.chkDmaChannel1.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel1.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel2
|
||||
//
|
||||
this.chkDmaChannel2.AutoSize = true;
|
||||
this.chkDmaChannel2.Location = new System.Drawing.Point(3, 49);
|
||||
this.chkDmaChannel2.Name = "chkDmaChannel2";
|
||||
this.chkDmaChannel2.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel2.TabIndex = 4;
|
||||
this.chkDmaChannel2.Text = "Channel 2";
|
||||
this.chkDmaChannel2.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel2.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel3
|
||||
//
|
||||
this.chkDmaChannel3.AutoSize = true;
|
||||
this.chkDmaChannel3.Location = new System.Drawing.Point(3, 72);
|
||||
this.chkDmaChannel3.Name = "chkDmaChannel3";
|
||||
this.chkDmaChannel3.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel3.TabIndex = 6;
|
||||
this.chkDmaChannel3.Text = "Channel 3";
|
||||
this.chkDmaChannel3.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel3.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel4
|
||||
//
|
||||
this.chkDmaChannel4.AutoSize = true;
|
||||
this.chkDmaChannel4.Location = new System.Drawing.Point(133, 3);
|
||||
this.chkDmaChannel4.Name = "chkDmaChannel4";
|
||||
this.chkDmaChannel4.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel4.TabIndex = 1;
|
||||
this.chkDmaChannel4.Text = "Channel 4";
|
||||
this.chkDmaChannel4.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel4.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel5
|
||||
//
|
||||
this.chkDmaChannel5.AutoSize = true;
|
||||
this.chkDmaChannel5.Location = new System.Drawing.Point(133, 26);
|
||||
this.chkDmaChannel5.Name = "chkDmaChannel5";
|
||||
this.chkDmaChannel5.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel5.TabIndex = 3;
|
||||
this.chkDmaChannel5.Text = "Channel 5";
|
||||
this.chkDmaChannel5.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel5.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel6
|
||||
//
|
||||
this.chkDmaChannel6.AutoSize = true;
|
||||
this.chkDmaChannel6.Location = new System.Drawing.Point(133, 49);
|
||||
this.chkDmaChannel6.Name = "chkDmaChannel6";
|
||||
this.chkDmaChannel6.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel6.TabIndex = 5;
|
||||
this.chkDmaChannel6.Text = "Channel 6";
|
||||
this.chkDmaChannel6.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel6.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// chkDmaChannel7
|
||||
//
|
||||
this.chkDmaChannel7.AutoSize = true;
|
||||
this.chkDmaChannel7.Location = new System.Drawing.Point(133, 72);
|
||||
this.chkDmaChannel7.Name = "chkDmaChannel7";
|
||||
this.chkDmaChannel7.Size = new System.Drawing.Size(74, 17);
|
||||
this.chkDmaChannel7.TabIndex = 7;
|
||||
this.chkDmaChannel7.Text = "Channel 7";
|
||||
this.chkDmaChannel7.UseVisualStyleBackColor = true;
|
||||
this.chkDmaChannel7.Click += new System.EventHandler(this.chkOption_Click);
|
||||
//
|
||||
// picViewer
|
||||
//
|
||||
this.picViewer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
|
@ -580,7 +52,7 @@ namespace Mesen.GUI.Debugger
|
|||
this.picViewer.Overlay = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.picViewer.Selection = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.picViewer.SelectionWrapPosition = 0;
|
||||
this.picViewer.Size = new System.Drawing.Size(669, 529);
|
||||
this.picViewer.Size = new System.Drawing.Size(947, 529);
|
||||
this.picViewer.TabIndex = 3;
|
||||
this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
|
||||
this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
|
||||
|
@ -590,72 +62,14 @@ namespace Mesen.GUI.Debugger
|
|||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.picViewer);
|
||||
this.Controls.Add(this.grpOptions);
|
||||
this.Name = "ctrlEventViewerPpuView";
|
||||
this.Size = new System.Drawing.Size(947, 529);
|
||||
this.grpOptions.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNmi)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picIrq)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picWramReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picCpuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picApuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuWrites)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picPpuReads)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).EndInit();
|
||||
this.grpDmaFilters.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Timer tmrOverlay;
|
||||
private System.Windows.Forms.GroupBox grpOptions;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private ctrlColorPicker picNmi;
|
||||
private System.Windows.Forms.CheckBox chkShowNmi;
|
||||
private ctrlColorPicker picIrq;
|
||||
private System.Windows.Forms.CheckBox chkShowIrq;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private ctrlColorPicker picWramWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowWorkRamRegisterWrites;
|
||||
private ctrlColorPicker picWramReads;
|
||||
private System.Windows.Forms.CheckBox chkShowWorkRamRegisterReads;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private ctrlColorPicker picCpuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowCpuRegisterWrites;
|
||||
private ctrlColorPicker picCpuReads;
|
||||
private System.Windows.Forms.CheckBox chkShowCpuRegisterReads;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.CheckBox chkShowApuRegisterWrites;
|
||||
private ctrlColorPicker picApuReads;
|
||||
private System.Windows.Forms.CheckBox chkShowApuRegisterReads;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private ctrlColorPicker picPpuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowPpuRegisterWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowPpuRegisterReads;
|
||||
private System.Windows.Forms.Label lblPpuRegisters;
|
||||
private ctrlColorPicker picPpuReads;
|
||||
private ctrlColorPicker picApuWrites;
|
||||
private System.Windows.Forms.CheckBox chkShowMarkedBreakpoints;
|
||||
private ctrlColorPicker picMarkedBreakpoints;
|
||||
private System.Windows.Forms.CheckBox chkShowPreviousFrameEvents;
|
||||
private PpuViewer.ctrlImagePanel picViewer;
|
||||
private System.Windows.Forms.GroupBox grpDmaFilters;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel0;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel1;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel2;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel3;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel4;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel5;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel6;
|
||||
private System.Windows.Forms.CheckBox chkDmaChannel7;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,10 @@ namespace Mesen.GUI.Debugger
|
|||
{
|
||||
public partial class ctrlEventViewerPpuView : BaseControl
|
||||
{
|
||||
private const int HdmaChannelFlag = 0x80;
|
||||
public const int HdmaChannelFlag = 0x40;
|
||||
|
||||
private int _baseWidth = 340 * 2;
|
||||
|
||||
private EntityBinder _entityBinder = new EntityBinder();
|
||||
private Point _lastPos = new Point(-1, -1);
|
||||
private bool _needUpdate = false;
|
||||
private Bitmap _screenBitmap = null;
|
||||
|
@ -31,8 +30,8 @@ namespace Mesen.GUI.Debugger
|
|||
private Bitmap _displayBitmap = null;
|
||||
private byte[] _pictureData = null;
|
||||
private Font _overlayFont;
|
||||
private UInt32 _scanlineCount = 262;
|
||||
|
||||
public UInt32 ScanlineCount { get; set; } = 262;
|
||||
public int ImageScale { get { return picViewer.ImageScale; } set { picViewer.ImageScale = value; } }
|
||||
|
||||
public ctrlEventViewerPpuView()
|
||||
|
@ -47,77 +46,15 @@ namespace Mesen.GUI.Debugger
|
|||
if(!IsDesignMode) {
|
||||
tmrOverlay.Start();
|
||||
_overlayFont = new Font(BaseControl.MonospaceFontFamily, 10);
|
||||
|
||||
_entityBinder.Entity = ConfigManager.Config.Debug.EventViewer;
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterReadColor), picApuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterWriteColor), picApuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterReadColor), picCpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterWriteColor), picCpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.IrqColor), picIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.BreakpointColor), picMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.NmiColor), picNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterReadColor), picPpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterWriteColor), picPpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterReadColor), picWramReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterWriteColor), picWramWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterReads), chkShowApuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterWrites), chkShowApuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterReads), chkShowCpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowIrq), chkShowIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowNmi), chkShowNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterReads), chkShowPpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel0), chkDmaChannel0);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel1), chkDmaChannel1);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel2), chkDmaChannel2);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel3), chkDmaChannel3);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel4), chkDmaChannel4);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel5), chkDmaChannel5);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel6), chkDmaChannel6);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowDmaChannel7), chkDmaChannel7);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
|
||||
|
||||
_entityBinder.UpdateUI();
|
||||
|
||||
RefreshData();
|
||||
RefreshViewer();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
if(!IsDesignMode) {
|
||||
_entityBinder.UpdateObject();
|
||||
ConfigManager.ApplyChanges();
|
||||
}
|
||||
|
||||
base.OnHandleDestroyed(e);
|
||||
}
|
||||
|
||||
public void RefreshData()
|
||||
{
|
||||
this.BeginInvoke((Action)(() => {
|
||||
_entityBinder.UpdateObject();
|
||||
}));
|
||||
|
||||
EventViewerDisplayOptions options = ConfigManager.Config.Debug.EventViewer.GetInteropOptions();
|
||||
_scanlineCount = DebugApi.TakeEventSnapshot(options);
|
||||
}
|
||||
|
||||
public void RefreshViewer()
|
||||
{
|
||||
_entityBinder.UpdateObject();
|
||||
EventViewerDisplayOptions options = ConfigManager.Config.Debug.EventViewer.GetInteropOptions();
|
||||
_pictureData = DebugApi.GetEventViewerOutput(_scanlineCount, options);
|
||||
_pictureData = DebugApi.GetEventViewerOutput(ScanlineCount, options);
|
||||
|
||||
int picHeight = (int)_scanlineCount*2;
|
||||
int picHeight = (int)ScanlineCount*2;
|
||||
if(_screenBitmap == null || _screenBitmap.Height != picHeight) {
|
||||
_screenBitmap = new Bitmap(_baseWidth, picHeight, PixelFormat.Format32bppPArgb);
|
||||
_overlayBitmap = new Bitmap(_baseWidth, picHeight, PixelFormat.Format32bppPArgb);
|
||||
|
@ -126,7 +63,7 @@ namespace Mesen.GUI.Debugger
|
|||
|
||||
GCHandle handle = GCHandle.Alloc(this._pictureData, GCHandleType.Pinned);
|
||||
try {
|
||||
Bitmap source = new Bitmap(_baseWidth, (int)_scanlineCount*2, _baseWidth*4, PixelFormat.Format32bppPArgb, handle.AddrOfPinnedObject());
|
||||
Bitmap source = new Bitmap(_baseWidth, (int)ScanlineCount*2, _baseWidth*4, PixelFormat.Format32bppPArgb, handle.AddrOfPinnedObject());
|
||||
using(Graphics g = Graphics.FromImage(_screenBitmap)) {
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
|
||||
|
@ -167,7 +104,7 @@ namespace Mesen.GUI.Debugger
|
|||
}
|
||||
}
|
||||
|
||||
picViewer.ImageSize = new Size(_baseWidth, (int)_scanlineCount*2);
|
||||
picViewer.ImageSize = new Size(_baseWidth, (int)ScanlineCount*2);
|
||||
picViewer.Image = _displayBitmap;
|
||||
_needUpdate = false;
|
||||
}
|
||||
|
@ -310,11 +247,6 @@ namespace Mesen.GUI.Debugger
|
|||
{
|
||||
UpdateDisplay(false);
|
||||
}
|
||||
|
||||
private void chkOption_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshViewer();
|
||||
}
|
||||
|
||||
public void ZoomIn()
|
||||
{
|
||||
|
|
86
UI/Debugger/EventViewer/frmEventViewer.Designer.cs
generated
86
UI/Debugger/EventViewer/frmEventViewer.Designer.cs
generated
|
@ -43,16 +43,26 @@
|
|||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuZoomIn = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuZoomOut = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tabMain = new System.Windows.Forms.TabControl();
|
||||
this.tpgPpuView = new System.Windows.Forms.TabPage();
|
||||
this.tpgListView = new System.Windows.Forms.TabPage();
|
||||
this.ctrlListView = new Mesen.GUI.Debugger.ctrlEventViewerListView();
|
||||
this.ctrlFilters = new Mesen.GUI.Debugger.ctrlEventViewerFilters();
|
||||
this.mnuMain.SuspendLayout();
|
||||
this.tabMain.SuspendLayout();
|
||||
this.tpgPpuView.SuspendLayout();
|
||||
this.tpgListView.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ctrlPpuView
|
||||
//
|
||||
this.ctrlPpuView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlPpuView.ImageScale = 1;
|
||||
this.ctrlPpuView.Location = new System.Drawing.Point(0, 24);
|
||||
this.ctrlPpuView.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlPpuView.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.ctrlPpuView.Name = "ctrlPpuView";
|
||||
this.ctrlPpuView.Size = new System.Drawing.Size(945, 531);
|
||||
this.ctrlPpuView.ScanlineCount = ((uint)(262u));
|
||||
this.ctrlPpuView.Size = new System.Drawing.Size(675, 541);
|
||||
this.ctrlPpuView.TabIndex = 0;
|
||||
//
|
||||
// mnuMain
|
||||
|
@ -62,7 +72,7 @@
|
|||
this.mnuView});
|
||||
this.mnuMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.mnuMain.Name = "mnuMain";
|
||||
this.mnuMain.Size = new System.Drawing.Size(945, 24);
|
||||
this.mnuMain.Size = new System.Drawing.Size(946, 24);
|
||||
this.mnuMain.TabIndex = 10;
|
||||
this.mnuMain.Text = "ctrlMesenMenuStrip1";
|
||||
//
|
||||
|
@ -173,19 +183,78 @@
|
|||
this.mnuZoomOut.Size = new System.Drawing.Size(198, 22);
|
||||
this.mnuZoomOut.Text = "Zoom Out";
|
||||
//
|
||||
// tabMain
|
||||
//
|
||||
this.tabMain.Controls.Add(this.tpgPpuView);
|
||||
this.tabMain.Controls.Add(this.tpgListView);
|
||||
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabMain.Location = new System.Drawing.Point(0, 24);
|
||||
this.tabMain.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.tabMain.Name = "tabMain";
|
||||
this.tabMain.SelectedIndex = 0;
|
||||
this.tabMain.Size = new System.Drawing.Size(683, 567);
|
||||
this.tabMain.TabIndex = 11;
|
||||
this.tabMain.SelectedIndexChanged += new System.EventHandler(this.tabMain_SelectedIndexChanged);
|
||||
//
|
||||
// tpgPpuView
|
||||
//
|
||||
this.tpgPpuView.Controls.Add(this.ctrlPpuView);
|
||||
this.tpgPpuView.Location = new System.Drawing.Point(4, 22);
|
||||
this.tpgPpuView.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.tpgPpuView.Name = "tpgPpuView";
|
||||
this.tpgPpuView.Size = new System.Drawing.Size(675, 541);
|
||||
this.tpgPpuView.TabIndex = 0;
|
||||
this.tpgPpuView.Text = "PPU View";
|
||||
this.tpgPpuView.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tpgListView
|
||||
//
|
||||
this.tpgListView.Controls.Add(this.ctrlListView);
|
||||
this.tpgListView.Location = new System.Drawing.Point(4, 22);
|
||||
this.tpgListView.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.tpgListView.Name = "tpgListView";
|
||||
this.tpgListView.Size = new System.Drawing.Size(678, 541);
|
||||
this.tpgListView.TabIndex = 1;
|
||||
this.tpgListView.Text = "List View";
|
||||
this.tpgListView.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ctrlListView
|
||||
//
|
||||
this.ctrlListView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlListView.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlListView.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.ctrlListView.Name = "ctrlListView";
|
||||
this.ctrlListView.Size = new System.Drawing.Size(678, 541);
|
||||
this.ctrlListView.TabIndex = 2;
|
||||
//
|
||||
// ctrlFilters
|
||||
//
|
||||
this.ctrlFilters.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.ctrlFilters.Location = new System.Drawing.Point(683, 24);
|
||||
this.ctrlFilters.Name = "ctrlFilters";
|
||||
this.ctrlFilters.Padding = new System.Windows.Forms.Padding(0, 0, 2, 0);
|
||||
this.ctrlFilters.Size = new System.Drawing.Size(263, 567);
|
||||
this.ctrlFilters.TabIndex = 12;
|
||||
this.ctrlFilters.OptionsChanged += new System.EventHandler(this.ctrlFilters_OptionsChanged);
|
||||
//
|
||||
// frmEventViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(945, 555);
|
||||
this.Controls.Add(this.ctrlPpuView);
|
||||
this.ClientSize = new System.Drawing.Size(946, 591);
|
||||
this.Controls.Add(this.tabMain);
|
||||
this.Controls.Add(this.ctrlFilters);
|
||||
this.Controls.Add(this.mnuMain);
|
||||
this.Name = "frmEventViewer";
|
||||
this.Text = "Event Viewer";
|
||||
this.Controls.SetChildIndex(this.mnuMain, 0);
|
||||
this.Controls.SetChildIndex(this.ctrlPpuView, 0);
|
||||
this.Controls.SetChildIndex(this.ctrlFilters, 0);
|
||||
this.Controls.SetChildIndex(this.tabMain, 0);
|
||||
this.mnuMain.ResumeLayout(false);
|
||||
this.mnuMain.PerformLayout();
|
||||
this.tabMain.ResumeLayout(false);
|
||||
this.tpgPpuView.ResumeLayout(false);
|
||||
this.tpgListView.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -209,5 +278,10 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem mnuAutoRefreshNormal;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuAutoRefreshHigh;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.TabControl tabMain;
|
||||
private System.Windows.Forms.TabPage tpgPpuView;
|
||||
private System.Windows.Forms.TabPage tpgListView;
|
||||
private ctrlEventViewerFilters ctrlFilters;
|
||||
private ctrlEventViewerListView ctrlListView;
|
||||
}
|
||||
}
|
|
@ -49,6 +49,8 @@ namespace Mesen.GUI.Debugger
|
|||
mnuAutoRefreshNormal.Click += (s, evt) => _refreshManager.AutoRefreshSpeed = RefreshSpeed.Normal;
|
||||
mnuAutoRefreshHigh.Click += (s, evt) => _refreshManager.AutoRefreshSpeed = RefreshSpeed.High;
|
||||
mnuAutoRefreshSpeed.DropDownOpening += (s, evt) => UpdateRefreshSpeedMenu();
|
||||
|
||||
ctrlFilters.Init();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -80,12 +82,17 @@ namespace Mesen.GUI.Debugger
|
|||
|
||||
public void RefreshData()
|
||||
{
|
||||
ctrlPpuView.RefreshData();
|
||||
EventViewerDisplayOptions options = ConfigManager.Config.Debug.EventViewer.GetInteropOptions();
|
||||
ctrlPpuView.ScanlineCount = DebugApi.TakeEventSnapshot(options);
|
||||
}
|
||||
|
||||
public void RefreshViewer()
|
||||
{
|
||||
ctrlPpuView.RefreshViewer();
|
||||
if(tabMain.SelectedTab == tpgPpuView) {
|
||||
ctrlPpuView.RefreshViewer();
|
||||
} else {
|
||||
ctrlListView.RefreshViewer();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNotificationReceived(NotificationEventArgs e)
|
||||
|
@ -93,9 +100,9 @@ namespace Mesen.GUI.Debugger
|
|||
switch(e.NotificationType) {
|
||||
case ConsoleNotificationType.CodeBreak:
|
||||
if(ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause) {
|
||||
ctrlPpuView.RefreshData();
|
||||
RefreshData();
|
||||
this.BeginInvoke((Action)(() => {
|
||||
ctrlPpuView.RefreshViewer();
|
||||
RefreshViewer();
|
||||
}));
|
||||
}
|
||||
break;
|
||||
|
@ -125,5 +132,15 @@ namespace Mesen.GUI.Debugger
|
|||
mnuAutoRefreshNormal.Checked = _refreshManager.AutoRefreshSpeed == RefreshSpeed.Normal;
|
||||
mnuAutoRefreshHigh.Checked = _refreshManager.AutoRefreshSpeed == RefreshSpeed.High;
|
||||
}
|
||||
|
||||
private void ctrlFilters_OptionsChanged(object sender, EventArgs e)
|
||||
{
|
||||
RefreshViewer();
|
||||
}
|
||||
|
||||
private void tabMain_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
RefreshViewer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,14 +91,14 @@ namespace Mesen.GUI
|
|||
|
||||
[DllImport(DllPath)] public static extern void SetViewerUpdateTiming(Int32 viewerId, Int32 scanline, Int32 cycle);
|
||||
|
||||
[DllImport(DllPath)] private static extern UInt32 GetDebugEventCount([MarshalAs(UnmanagedType.I1)]bool getPreviousFrameData);
|
||||
[DllImport(DllPath, EntryPoint = "GetDebugEvents")] private static extern void GetDebugEventsWrapper([In, Out]DebugEventInfo[] eventArray, ref UInt32 maxEventCount, [MarshalAs(UnmanagedType.I1)]bool getPreviousFrameData);
|
||||
public static DebugEventInfo[] GetDebugEvents(bool getPreviousFrameData)
|
||||
[DllImport(DllPath)] private static extern UInt32 GetDebugEventCount(EventViewerDisplayOptions options);
|
||||
[DllImport(DllPath, EntryPoint = "GetDebugEvents")] private static extern void GetDebugEventsWrapper([In, Out]DebugEventInfo[] eventArray, ref UInt32 maxEventCount);
|
||||
public static DebugEventInfo[] GetDebugEvents(EventViewerDisplayOptions options)
|
||||
{
|
||||
UInt32 maxEventCount = GetDebugEventCount(getPreviousFrameData);
|
||||
UInt32 maxEventCount = GetDebugEventCount(options);
|
||||
DebugEventInfo[] debugEvents = new DebugEventInfo[maxEventCount];
|
||||
|
||||
DebugApi.GetDebugEventsWrapper(debugEvents, ref maxEventCount, getPreviousFrameData);
|
||||
DebugApi.GetDebugEventsWrapper(debugEvents, ref maxEventCount);
|
||||
if(maxEventCount < debugEvents.Length) {
|
||||
//Remove the excess from the array if needed
|
||||
Array.Resize(ref debugEvents, (int)maxEventCount);
|
||||
|
@ -302,7 +302,7 @@ namespace Mesen.GUI
|
|||
public UInt32 ProgramCounter;
|
||||
public UInt16 Scanline;
|
||||
public UInt16 Cycle;
|
||||
public UInt16 BreakpointId;
|
||||
public Int16 BreakpointId;
|
||||
public byte DmaChannel;
|
||||
public DmaChannelConfig DmaChannelInfo;
|
||||
};
|
||||
|
|
18
UI/UI.csproj
18
UI/UI.csproj
|
@ -297,6 +297,18 @@
|
|||
<Compile Include="Debugger\Controls\ctrlSpcStatus.Designer.cs">
|
||||
<DependentUpon>ctrlSpcStatus.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\EventViewer\ctrlEventViewerFilters.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\EventViewer\ctrlEventViewerFilters.Designer.cs">
|
||||
<DependentUpon>ctrlEventViewerFilters.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\EventViewer\ctrlEventViewerListView.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\EventViewer\ctrlEventViewerListView.Designer.cs">
|
||||
<DependentUpon>ctrlEventViewerListView.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\frmBreakIn.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -979,6 +991,12 @@
|
|||
<EmbeddedResource Include="Debugger\Controls\ctrlDisassemblyView.resx">
|
||||
<DependentUpon>ctrlDisassemblyView.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Debugger\EventViewer\ctrlEventViewerFilters.resx">
|
||||
<DependentUpon>ctrlEventViewerFilters.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Debugger\EventViewer\ctrlEventViewerListView.resx">
|
||||
<DependentUpon>ctrlEventViewerListView.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Debugger\frmBreakIn.resx">
|
||||
<DependentUpon>frmBreakIn.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
Loading…
Add table
Reference in a new issue