mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 13:57:57 -07:00
Merge pull request #5922 from sepalani/mem-base
MemoryWindow: base address search added
This commit is contained in:
commit
bc6846ce3b
@ -345,7 +345,7 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
{
|
{
|
||||||
u8* ram_ptr = nullptr;
|
u8* ram_ptr = nullptr;
|
||||||
std::size_t ram_size = 0;
|
std::size_t ram_size = 0;
|
||||||
// NOTE: We're assuming the base address is zero.
|
u32 base_address = 0;
|
||||||
switch (m_memory_view->GetMemoryType())
|
switch (m_memory_view->GetMemoryType())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -354,6 +354,7 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
{
|
{
|
||||||
ram_ptr = Memory::m_pRAM;
|
ram_ptr = Memory::m_pRAM;
|
||||||
ram_size = Memory::REALRAM_SIZE;
|
ram_size = Memory::REALRAM_SIZE;
|
||||||
|
base_address = 0x80000000;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
@ -363,6 +364,7 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
{
|
{
|
||||||
ram_ptr = aram;
|
ram_ptr = aram;
|
||||||
ram_size = DSP::ARAM_SIZE;
|
ram_size = DSP::ARAM_SIZE;
|
||||||
|
base_address = 0x0c005000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -419,7 +421,7 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Search starting from specified address if there is one.
|
// Search starting from specified address if there is one.
|
||||||
u32 addr = 0; // Base address
|
u32 addr = 0; // Physical address
|
||||||
{
|
{
|
||||||
wxString addr_val = m_address_search_ctrl->GetValue();
|
wxString addr_val = m_address_search_ctrl->GetValue();
|
||||||
addr_val.Trim(true).Trim(false);
|
addr_val.Trim(true).Trim(false);
|
||||||
@ -429,6 +431,9 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
if (addr_val.ToULong(&addr_ul, 16))
|
if (addr_val.ToULong(&addr_ul, 16))
|
||||||
{
|
{
|
||||||
addr = static_cast<u32>(addr_ul);
|
addr = static_cast<u32>(addr_ul);
|
||||||
|
// Get physical address
|
||||||
|
if (addr >= base_address)
|
||||||
|
addr -= base_address;
|
||||||
// Don't find the result we're already looking at
|
// Don't find the result we're already looking at
|
||||||
if (m_continue_search && addr == m_last_search_address &&
|
if (m_continue_search && addr == m_last_search_address &&
|
||||||
search_type == SearchType::FindNext)
|
search_type == SearchType::FindNext)
|
||||||
@ -466,7 +471,7 @@ void CMemoryWindow::Search(SearchType search_type)
|
|||||||
m_search_result_msg->SetLabel(_("Match Found"));
|
m_search_result_msg->SetLabel(_("Match Found"));
|
||||||
u32 offset = static_cast<u32>(ptr - ram_ptr);
|
u32 offset = static_cast<u32>(ptr - ram_ptr);
|
||||||
// NOTE: SetValue() generates a synthetic wxEVT_TEXT
|
// NOTE: SetValue() generates a synthetic wxEVT_TEXT
|
||||||
m_address_search_ctrl->SetValue(wxString::Format("%08x", offset));
|
m_address_search_ctrl->SetValue(wxString::Format("%08x", base_address + offset));
|
||||||
m_last_search_address = offset;
|
m_last_search_address = offset;
|
||||||
m_continue_search = true;
|
m_continue_search = true;
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user