summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-12-07 15:14:29 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2013-12-31 14:03:19 -0500
commit34692ab826abc8f8faa61bdb2280b742424528f1 (patch)
treeb0eedc645badbea316ff59c125eaf808b28777ec /Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp
parent43e618682e8093602fc83dfa902ee7ae3fd3a4f6 (diff)
Remove unnecessary Src/ folders
Diffstat (limited to 'Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp')
-rw-r--r--Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp b/Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp
new file mode 100644
index 0000000000..b3ad7dde8a
--- /dev/null
+++ b/Source/Core/DolphinWX/Debugger/DSPRegisterView.cpp
@@ -0,0 +1,81 @@
+// Copyright 2013 Dolphin Emulator Project
+// Licensed under GPLv2
+// Refer to the license.txt file included.
+
+#include "DSPDebugWindow.h"
+#include "DSPRegisterView.h"
+#include "../WxUtils.h"
+
+wxString CDSPRegTable::GetValue(int row, int col)
+{
+ if (row < 32) // 32 "normal" regs
+ {
+ switch (col)
+ {
+ case 0: return StrToWxStr(pdregname(row));
+ case 1: return wxString::Format(wxT("0x%04x"), DSPCore_ReadRegister(row));
+ default: return wxEmptyString;
+ }
+ }
+ return wxEmptyString;
+}
+
+void CDSPRegTable::SetValue(int, int, const wxString &)
+{
+}
+
+void CDSPRegTable::UpdateCachedRegs()
+{
+ if (m_CachedCounter == g_dsp.step_counter)
+ {
+ return;
+ }
+
+ m_CachedCounter = g_dsp.step_counter;
+
+ for (int i = 0; i < 32; ++i)
+ {
+ m_CachedRegHasChanged[i] = (m_CachedRegs[i] != DSPCore_ReadRegister(i));
+ m_CachedRegs[i] = DSPCore_ReadRegister(i);
+ }
+}
+
+wxGridCellAttr *CDSPRegTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind)
+{
+ wxGridCellAttr *attr = new wxGridCellAttr();
+
+ attr->SetBackgroundColour(wxColour(wxT("#FFFFFF")));
+
+ switch (col)
+ {
+ case 1:
+ attr->SetAlignment(wxALIGN_CENTER, wxALIGN_CENTER);
+ break;
+ default:
+ attr->SetAlignment(wxALIGN_LEFT, wxALIGN_CENTER);
+ break;
+ }
+
+ if (col == 1)
+ attr->SetTextColour(m_CachedRegHasChanged[row] ? wxColor(wxT("#FF0000")) : wxColor(wxT("#000000")));
+
+ attr->IncRef();
+ return attr;
+}
+
+DSPRegisterView::DSPRegisterView(wxWindow *parent, wxWindowID id)
+ : wxGrid(parent, id, wxDefaultPosition, wxSize(130, 120))
+{
+ SetTable(new CDSPRegTable(), true);
+ SetRowLabelSize(0);
+ SetColLabelSize(0);
+ DisableDragRowSize();
+
+ AutoSizeColumns();
+}
+
+void DSPRegisterView::Update()
+{
+ ((CDSPRegTable *)GetTable())->UpdateCachedRegs();
+ ForceRefresh();
+}