From 2172974db90f361c91c80d0cc26e4200276154c8 Mon Sep 17 00:00:00 2001 From: Eladash Date: Thu, 17 Dec 2020 00:11:45 +0200 Subject: [PATCH] Link the memory viewer with the debugger --- rpcs3/rpcs3qt/debugger_frame.cpp | 23 +++++++++++++++++++++++ rpcs3/rpcs3qt/memory_viewer_panel.cpp | 5 +++-- rpcs3/rpcs3qt/memory_viewer_panel.h | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rpcs3/rpcs3qt/debugger_frame.cpp b/rpcs3/rpcs3qt/debugger_frame.cpp index fa3faf5236..011c0e49fa 100644 --- a/rpcs3/rpcs3qt/debugger_frame.cpp +++ b/rpcs3/rpcs3qt/debugger_frame.cpp @@ -1,6 +1,7 @@ #include "debugger_frame.h" #include "register_editor_dialog.h" #include "instruction_editor_dialog.h" +#include "memory_viewer_panel.h" #include "gui_settings.h" #include "debugger_list.h" #include "breakpoint_list.h" @@ -313,6 +314,28 @@ void debugger_frame::keyPressEvent(QKeyEvent* event) return; } + case Qt::Key_M: + { + // Memory viewer + + u32 addr = pc; + + if (auto spu = static_cast(cpu->id_type() == 2 ? cpu.get() : nullptr)) + { + if (spu->get_type() != spu_type::threaded) + { + addr += RAW_SPU_BASE_ADDR + RAW_SPU_OFFSET * spu->index; + } + else + { + addr += SPU_FAKE_BASE_ADDR + SPU_LS_SIZE * (spu->id & 0xffffff); + } + } + + auto mvp = new memory_viewer_panel(this, addr); + mvp->show(); + return; + } case Qt::Key_F10: { DoStep(true); diff --git a/rpcs3/rpcs3qt/memory_viewer_panel.cpp b/rpcs3/rpcs3qt/memory_viewer_panel.cpp index 9107d0dbf6..a3389e7c17 100644 --- a/rpcs3/rpcs3qt/memory_viewer_panel.cpp +++ b/rpcs3/rpcs3qt/memory_viewer_panel.cpp @@ -15,14 +15,14 @@ constexpr auto qstr = QString::fromStdString; -memory_viewer_panel::memory_viewer_panel(QWidget* parent) +memory_viewer_panel::memory_viewer_panel(QWidget* parent, u32 addr) : QDialog(parent) + , m_addr(addr) { setWindowTitle(tr("Memory Viewer")); setObjectName("memory_viewer"); setAttribute(Qt::WA_DeleteOnClose); exit = false; - m_addr = 0; m_colcount = 16; m_rowcount = 16; int pSize = 10; @@ -47,6 +47,7 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent) QHBoxLayout* hbox_tools_mem_addr = new QHBoxLayout(); m_addr_line = new QLineEdit(this); m_addr_line->setPlaceholderText("00000000"); + m_addr_line->setText(qstr(fmt::format("%08x", m_addr))); m_addr_line->setFont(mono); m_addr_line->setMaxLength(8); m_addr_line->setFixedWidth(75); diff --git a/rpcs3/rpcs3qt/memory_viewer_panel.h b/rpcs3/rpcs3qt/memory_viewer_panel.h index f8cf048c11..6f96335e13 100644 --- a/rpcs3/rpcs3qt/memory_viewer_panel.h +++ b/rpcs3/rpcs3qt/memory_viewer_panel.h @@ -28,7 +28,7 @@ private: public: bool exit; - memory_viewer_panel(QWidget* parent); + memory_viewer_panel(QWidget* parent, u32 addr = 0); ~memory_viewer_panel(); void wheelEvent(QWheelEvent *event) override;