mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-12-31 04:37:03 +00:00
Add all the files
This commit is contained in:
parent
e3db07a16a
commit
d60742f52b
1445 changed files with 430238 additions and 0 deletions
137
src/gui/debugger/ModuleWindow.cpp
Normal file
137
src/gui/debugger/ModuleWindow.cpp
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
#include "gui/wxgui.h"
|
||||
#include "gui/guiWrapper.h"
|
||||
#include "gui/debugger/ModuleWindow.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "gui/debugger/DebuggerWindow2.h"
|
||||
#include "Cafe/HW/Espresso/Debugger/Debugger.h"
|
||||
|
||||
#include "Cafe/OS/RPL/rpl.h"
|
||||
#include "Cafe/OS/RPL/rpl_structs.h"
|
||||
|
||||
#include "Cafe/GraphicPack/GraphicPack2.h"
|
||||
|
||||
enum ItemColumns
|
||||
{
|
||||
ColumnName = 0,
|
||||
ColumnAddress,
|
||||
ColumnSize,
|
||||
};
|
||||
|
||||
ModuleWindow::ModuleWindow(DebuggerWindow2& parent, const wxPoint& main_position, const wxSize& main_size)
|
||||
: wxFrame(&parent, wxID_ANY, "Modules", wxDefaultPosition, wxSize(420, 250), wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN | wxRESIZE_BORDER | wxFRAME_FLOAT_ON_PARENT)
|
||||
{
|
||||
this->SetSizeHints(wxDefaultSize, wxDefaultSize);
|
||||
|
||||
this->wxWindowBase::SetBackgroundColour(*wxWHITE);
|
||||
|
||||
wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_modules = new wxListView(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
|
||||
|
||||
wxListItem col0;
|
||||
col0.SetId(ColumnName);
|
||||
col0.SetText(_("Name"));
|
||||
col0.SetWidth(125);
|
||||
m_modules->InsertColumn(ColumnName, col0);
|
||||
|
||||
wxListItem col1;
|
||||
col1.SetId(ColumnAddress);
|
||||
col1.SetText(_("Address"));
|
||||
col1.SetWidth(75);
|
||||
col1.SetAlign(wxLIST_FORMAT_RIGHT);
|
||||
m_modules->InsertColumn(ColumnAddress, col1);
|
||||
|
||||
wxListItem col2;
|
||||
col2.SetId(ColumnSize);
|
||||
col2.SetText(_("Size"));
|
||||
col2.SetWidth(75);
|
||||
col2.SetAlign(wxLIST_FORMAT_RIGHT);
|
||||
m_modules->InsertColumn(ColumnSize, col2);
|
||||
|
||||
main_sizer->Add(m_modules, 1, wxEXPAND);
|
||||
|
||||
this->SetSizer(main_sizer);
|
||||
this->wxWindowBase::Layout();
|
||||
|
||||
this->Centre(wxBOTH);
|
||||
|
||||
if (parent.GetConfig().data().pin_to_main)
|
||||
OnMainMove(main_position, main_size);
|
||||
|
||||
m_modules->Bind(wxEVT_LEFT_DCLICK, &ModuleWindow::OnLeftDClick, this);
|
||||
|
||||
OnGameLoaded();
|
||||
}
|
||||
|
||||
void ModuleWindow::OnMainMove(const wxPoint& main_position, const wxSize& main_size)
|
||||
{
|
||||
wxSize size(420, 250);
|
||||
this->SetSize(size);
|
||||
|
||||
wxPoint position = main_position;
|
||||
position.x -= 420;
|
||||
position.y += main_size.y;
|
||||
this->SetPosition(position);
|
||||
}
|
||||
|
||||
|
||||
void ModuleWindow::OnGameLoaded()
|
||||
{
|
||||
Freeze();
|
||||
|
||||
m_modules->DeleteAllItems();
|
||||
|
||||
const auto module_count = RPLLoader_GetModuleCount();
|
||||
const auto module_list = RPLLoader_GetModuleList();
|
||||
for (int i = 0; i < module_count; i++)
|
||||
{
|
||||
const auto module = module_list[i];
|
||||
if (module)
|
||||
{
|
||||
wxListItem item;
|
||||
item.SetId(i);
|
||||
item.SetText(module->moduleName2.c_str());
|
||||
|
||||
const auto index = m_modules->InsertItem(item);
|
||||
m_modules->SetItem(index, ColumnAddress, wxString::Format("%08x", module->regionMappingBase_text.GetMPTR()));
|
||||
m_modules->SetItem(index, ColumnSize, wxString::Format("%x", module->regionSize_text));
|
||||
}
|
||||
}
|
||||
|
||||
sint32 patch_count = 0;
|
||||
for (auto& gfx_pack : GraphicPack2::GetGraphicPacks())
|
||||
{
|
||||
for (auto& patch_group : gfx_pack->GetPatchGroups())
|
||||
{
|
||||
if (patch_group->isApplied())
|
||||
{
|
||||
wxListItem item;
|
||||
item.SetId(module_count + patch_count);
|
||||
item.SetText(std::string(patch_group->getName()));
|
||||
|
||||
const auto index = m_modules->InsertItem(item);
|
||||
m_modules->SetItem(index, ColumnAddress, wxString::Format("%08x", patch_group->getCodeCaveBase()));
|
||||
m_modules->SetItem(index, ColumnSize, wxString::Format("%x", patch_group->getCodeCaveSize()));
|
||||
patch_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Thaw();
|
||||
}
|
||||
|
||||
|
||||
void ModuleWindow::OnLeftDClick(wxMouseEvent& event)
|
||||
{
|
||||
long selected = m_modules->GetFirstSelected();
|
||||
if (selected == -1)
|
||||
return;
|
||||
const auto text = m_modules->GetItemText(selected, ColumnAddress);
|
||||
const auto address = std::stoul(text.ToStdString(), nullptr, 16);
|
||||
if (address == 0)
|
||||
return;
|
||||
debuggerState.debugSession.instructionPointer = address;
|
||||
debuggerWindow_moveIP();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue