Debugger: change how the nullbyte (0x00) are displayed in the memoryview widget.

This commit is contained in:
gooosedev 2024-07-15 13:51:16 -04:00 committed by lightningterror
parent 951780b43d
commit 4bf8b23204
1 changed files with 15 additions and 0 deletions

View File

@ -74,6 +74,7 @@ void MemoryViewTable::DrawTable(QPainter& painter, const QPalette& palette, s32
segmentXAxis[j] = valX; segmentXAxis[j] = valX;
bool penDefault = false;
if ((selectedAddress & ~0xF) == currentRowAddress) if ((selectedAddress & ~0xF) == currentRowAddress)
{ {
if (selectedAddress >= thisSegmentsStart && selectedAddress < (thisSegmentsStart + (s32)displayType)) if (selectedAddress >= thisSegmentsStart && selectedAddress < (thisSegmentsStart + (s32)displayType))
@ -90,10 +91,16 @@ void MemoryViewTable::DrawTable(QPainter& painter, const QPalette& palette, s32
painter.setPen(QColor::fromRgb(0xaa, 0x22, 0x22)); // SELECTED BYTE COLOUR painter.setPen(QColor::fromRgb(0xaa, 0x22, 0x22)); // SELECTED BYTE COLOUR
} }
else else
{
penDefault = true;
painter.setPen(palette.text().color()); // Default colour painter.setPen(palette.text().color()); // Default colour
}
} }
else else
{
penDefault = true;
painter.setPen(palette.text().color()); // Default colour painter.setPen(palette.text().color()); // Default colour
}
bool valid; bool valid;
switch (displayType) switch (displayType)
@ -101,24 +108,32 @@ void MemoryViewTable::DrawTable(QPainter& painter, const QPalette& palette, s32
case MemoryViewType::BYTE: case MemoryViewType::BYTE:
{ {
const u8 val = static_cast<u8>(m_cpu->read8(thisSegmentsStart, valid)); const u8 val = static_cast<u8>(m_cpu->read8(thisSegmentsStart, valid));
if (penDefault && val == 0)
painter.setPen(QColor::fromRgb(145, 145, 155)); // ZERO BYTE COLOUR
painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "??"); painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "??");
break; break;
} }
case MemoryViewType::BYTEHW: case MemoryViewType::BYTEHW:
{ {
const u16 val = convertEndian<u16>(static_cast<u16>(m_cpu->read16(thisSegmentsStart, valid))); const u16 val = convertEndian<u16>(static_cast<u16>(m_cpu->read16(thisSegmentsStart, valid)));
if (penDefault && val == 0)
painter.setPen(QColor::fromRgb(145, 145, 155)); // ZERO BYTE COLOUR
painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????"); painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????");
break; break;
} }
case MemoryViewType::WORD: case MemoryViewType::WORD:
{ {
const u32 val = convertEndian<u32>(m_cpu->read32(thisSegmentsStart, valid)); const u32 val = convertEndian<u32>(m_cpu->read32(thisSegmentsStart, valid));
if (penDefault && val == 0)
painter.setPen(QColor::fromRgb(145, 145, 155)); // ZERO BYTE COLOUR
painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????????"); painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????????");
break; break;
} }
case MemoryViewType::DWORD: case MemoryViewType::DWORD:
{ {
const u64 val = convertEndian<u64>(m_cpu->read64(thisSegmentsStart, valid)); const u64 val = convertEndian<u64>(m_cpu->read64(thisSegmentsStart, valid));
if (penDefault && val == 0)
painter.setPen(QColor::fromRgb(145, 145, 155)); // ZERO BYTE COLOUR
painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????????????????"); painter.drawText(valX, y + (rowHeight * i), valid ? FilledQStringFromValue(val, 16) : "????????????????");
break; break;
} }