mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-03 21:41:26 +12:00
rsx/spu support
This commit is contained in:
parent
70305cfb04
commit
7d88ffff74
3 changed files with 34 additions and 15 deletions
|
@ -1738,5 +1738,5 @@ void debugger_frame::RegsShowMemoryViewerAction()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
memory_viewer_panel::ShowAtPC(static_cast<u32>(pc));
|
memory_viewer_panel::ShowAtPC(static_cast<u32>(pc), make_check_cpu(get_cpu()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include "util/logs.hpp"
|
#include "util/logs.hpp"
|
||||||
#include "util/asm.hpp"
|
#include "util/asm.hpp"
|
||||||
|
#include "debugger_frame.h"
|
||||||
|
|
||||||
LOG_CHANNEL(gui_log, "GUI");
|
LOG_CHANNEL(gui_log, "GUI");
|
||||||
|
|
||||||
|
@ -597,14 +598,14 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent, std::shared_ptr<CPUDis
|
||||||
}
|
}
|
||||||
|
|
||||||
auto& fxo = g_fxo->get<memory_viewer_fxo>();
|
auto& fxo = g_fxo->get<memory_viewer_fxo>();
|
||||||
fxo.last_opened = this;
|
fxo.last_opened[m_type] = this;
|
||||||
|
|
||||||
connect(this, &memory_viewer_panel::destroyed, this, [this]()
|
connect(this, &memory_viewer_panel::destroyed, this, [this]()
|
||||||
{
|
{
|
||||||
if (auto fxo = g_fxo->try_get<memory_viewer_fxo>())
|
if (auto fxo = g_fxo->try_get<memory_viewer_fxo>())
|
||||||
{
|
{
|
||||||
if (this == fxo->last_opened)
|
if (this == fxo->last_opened[m_type])
|
||||||
fxo->last_opened = nullptr;
|
fxo->last_opened.erase(m_type);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1263,25 +1264,42 @@ void memory_viewer_panel::ShowImage(QWidget* parent, u32 addr, color_format form
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void memory_viewer_panel::ShowAtPC(u32 pc)
|
void memory_viewer_panel::ShowAtPC(u32 pc, std::function<cpu_thread*()> func)
|
||||||
{
|
{
|
||||||
if (Emu.IsStopped())
|
if (Emu.IsStopped())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
cpu_thread* cpu = func ? func() : nullptr;
|
||||||
|
thread_class type = cpu ? cpu->get_class() : thread_class::ppu;
|
||||||
|
|
||||||
|
if (type == thread_class::spu)
|
||||||
|
{
|
||||||
|
idm::make<memory_viewer_handle>(nullptr, nullptr, pc, std::move(func));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (const auto* fxo = g_fxo->try_get<memory_viewer_fxo>())
|
if (const auto* fxo = g_fxo->try_get<memory_viewer_fxo>())
|
||||||
{
|
{
|
||||||
if (auto* panel = fxo->last_opened)
|
auto it = fxo->last_opened.find(type);
|
||||||
|
|
||||||
|
if (it != fxo->last_opened.end())
|
||||||
|
{
|
||||||
|
memory_viewer_panel* panel = it->second;
|
||||||
|
|
||||||
|
if (panel)
|
||||||
{
|
{
|
||||||
panel->SetPC(pc);
|
panel->SetPC(pc);
|
||||||
panel->raise();
|
|
||||||
panel->scroll(0);
|
panel->scroll(0);
|
||||||
|
|
||||||
if (!panel->isVisible())
|
if (!panel->isVisible())
|
||||||
{
|
|
||||||
panel->show();
|
panel->show();
|
||||||
}
|
|
||||||
|
panel->raise();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
idm::make<memory_viewer_handle>(nullptr, nullptr, pc);
|
idm::make<memory_viewer_handle>(nullptr, nullptr, pc, std::move(func));
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
|
@ -55,7 +56,7 @@ public:
|
||||||
memory_viewer_panel(QWidget* parent, std::shared_ptr<CPUDisAsm> disasm, u32 addr = 0, std::function<cpu_thread*()> func = []() -> cpu_thread* { return {}; });
|
memory_viewer_panel(QWidget* parent, std::shared_ptr<CPUDisAsm> disasm, u32 addr = 0, std::function<cpu_thread*()> func = []() -> cpu_thread* { return {}; });
|
||||||
~memory_viewer_panel();
|
~memory_viewer_panel();
|
||||||
|
|
||||||
static void ShowAtPC(u32 pc);
|
static void ShowAtPC(u32 pc, std::function<cpu_thread*()> func = nullptr);
|
||||||
|
|
||||||
enum class color_format : int
|
enum class color_format : int
|
||||||
{
|
{
|
||||||
|
@ -142,7 +143,7 @@ private:
|
||||||
|
|
||||||
struct memory_viewer_fxo
|
struct memory_viewer_fxo
|
||||||
{
|
{
|
||||||
memory_viewer_panel* last_opened = nullptr;
|
std::map<thread_class, memory_viewer_panel*> last_opened;
|
||||||
|
|
||||||
memory_viewer_fxo() = default;
|
memory_viewer_fxo() = default;
|
||||||
memory_viewer_fxo(const memory_viewer_fxo&) = delete;
|
memory_viewer_fxo(const memory_viewer_fxo&) = delete;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue