Merge pull request #253 from ItzWarty/memoryviewer_fixes

Improve Memory Viewer: There are bugs in text representation.
This commit is contained in:
Alexandro Sánchez Bach
2014-05-20 00:29:03 +02:00
2 changed files with 18 additions and 12 deletions
+1 -1
View File
@@ -87,7 +87,7 @@ MemoryBlock* MemoryBlock::SetRange(const u64 start, const u32 size)
bool MemoryBlock::IsMyAddress(const u64 addr) bool MemoryBlock::IsMyAddress(const u64 addr)
{ {
return mem && addr >= GetStartAddr() && addr < GetEndAddr(); return mem && addr >= GetStartAddr() && addr <= GetEndAddr();
} }
template <typename T> template <typename T>
+9 -3
View File
@@ -191,14 +191,18 @@ void MemoryViewerPanel::ShowMemory()
t_mem_addr_str += wxString::Format("%08x ", addr); t_mem_addr_str += wxString::Format("%08x ", addr);
} }
for(u32 addr = m_addr; addr != m_addr + m_rowcount * m_colcount; addr++) for (int row = 0; row < m_rowcount; row++)
{ {
for (int col = 0; col < m_colcount; col++)
{
u32 addr = m_addr + row * m_colcount + col;
if (Memory.IsGoodAddr(addr)) if (Memory.IsGoodAddr(addr))
{ {
const u8 rmem = Memory.Read8(addr); const u8 rmem = Memory.Read8(addr);
t_mem_hex_str += wxString::Format("%02x ", rmem); t_mem_hex_str += wxString::Format("%02x ", rmem);
const wxString c_rmem = wxString::Format("%c", rmem); const bool isPrintable = rmem >= 32 && rmem <= 126;
t_mem_ascii_str += c_rmem.IsEmpty() ? "." : c_rmem; t_mem_ascii_str += isPrintable ? std::string(1, rmem) : ".";
} }
else else
{ {
@@ -206,6 +210,8 @@ void MemoryViewerPanel::ShowMemory()
t_mem_ascii_str += "?"; t_mem_ascii_str += "?";
} }
} }
t_mem_ascii_str += "\r\n";
}
t_mem_addr->SetValue(t_mem_addr_str); t_mem_addr->SetValue(t_mem_addr_str);
t_mem_hex->SetValue(t_mem_hex_str); t_mem_hex->SetValue(t_mem_hex_str);