Common/DebugInterface: Make return value of GetColor() a u32

At its only usage point, its return value is stored into a u32, and the
default implementation returns 0xFFFFFFFF (-1), which would be an
unsigned integer. Given all of the bits are used to determine a color,
it makes slightly more sense to treat this as an unsigned value as
opposed to a signed one.
This commit is contained in:
Lioncash 2019-07-08 18:13:27 -04:00
parent a9a9b193bb
commit d4d485b692
6 changed files with 28 additions and 24 deletions

View File

@ -74,7 +74,7 @@ public:
virtual void SetPC(u32 /*address*/) {}
virtual void Step() {}
virtual void RunToBreakpoint() {}
virtual int GetColor(u32 /*address*/) { return 0xFFFFFFFF; }
virtual u32 GetColor(u32 /*address*/) { return 0xFFFFFFFF; }
virtual std::string GetDescription(u32 /*address*/) = 0;
virtual void Clear() = 0;
};

View File

@ -4,6 +4,7 @@
#include "Core/Debugger/PPCDebugInterface.h"
#include <array>
#include <cstddef>
#include <string>
@ -300,13 +301,20 @@ void PPCDebugInterface::ToggleMemCheck(u32 address, bool read, bool write, bool
// =======================================================
// Separate the blocks with colors.
// -------------
int PPCDebugInterface::GetColor(u32 address)
u32 PPCDebugInterface::GetColor(u32 address)
{
if (!IsAlive())
return 0xFFFFFF;
if (!PowerPC::HostIsRAMAddress(address))
return 0xeeeeee;
static const int colors[6] = {
Common::Symbol* symbol = g_symbolDB.GetSymbolFromAddr(address);
if (!symbol)
return 0xFFFFFF;
if (symbol->type != Common::Symbol::Type::Function)
return 0xEEEEFF;
static constexpr std::array<u32, 6> colors{
0xd0FFFF, // light cyan
0xFFd0d0, // light red
0xd8d8FF, // light blue
@ -314,12 +322,7 @@ int PPCDebugInterface::GetColor(u32 address)
0xd0FFd0, // light green
0xFFFFd0, // light yellow
};
Common::Symbol* symbol = g_symbolDB.GetSymbolFromAddr(address);
if (!symbol)
return 0xFFFFFF;
if (symbol->type != Common::Symbol::Type::Function)
return 0xEEEEFF;
return colors[symbol->index % 6];
return colors[symbol->index % colors.size()];
}
// =============

View File

@ -77,7 +77,7 @@ public:
void SetPC(u32 address) override;
void Step() override {}
void RunToBreakpoint() override;
int GetColor(u32 address) override;
u32 GetColor(u32 address) override;
std::string GetDescription(u32 address) override;
void Clear() override;

View File

@ -4,6 +4,7 @@
#include "Core/HW/DSPLLE/DSPDebugInterface.h"
#include <array>
#include <cstddef>
#include <string>
@ -257,17 +258,8 @@ void DSPDebugInterface::ToggleMemCheck(u32 address, bool read, bool write, bool
// =======================================================
// Separate the blocks with colors.
// -------------
int DSPDebugInterface::GetColor(u32 address)
u32 DSPDebugInterface::GetColor(u32 address)
{
static const int colors[6] = {
0xd0FFFF, // light cyan
0xFFd0d0, // light red
0xd8d8FF, // light blue
0xFFd0FF, // light purple
0xd0FFd0, // light green
0xFFFFd0, // light yellow
};
// Scan backwards so we don't miss it. Hm, actually, let's not - it looks pretty good.
int addr = -1;
for (int i = 0; i < 1; i++)
@ -284,7 +276,16 @@ int DSPDebugInterface::GetColor(u32 address)
return 0xFFFFFF;
if (symbol->type != Common::Symbol::Type::Function)
return 0xEEEEFF;
return colors[symbol->index % 6];
static constexpr std::array<u32, 6> colors{
0xd0FFFF, // light cyan
0xFFd0d0, // light red
0xd8d8FF, // light blue
0xFFd0FF, // light purple
0xd0FFd0, // light green
0xFFFFd0, // light yellow
};
return colors[symbol->index % colors.size()];
}
// =============

View File

@ -71,7 +71,7 @@ public:
void SetPC(u32 address) override;
void Step() override {}
void RunToBreakpoint() override;
int GetColor(u32 address) override;
u32 GetColor(u32 address) override;
std::string GetDescription(u32 address) override;
void Clear() override;

View File

@ -121,8 +121,8 @@ void CodeViewWidget::Update()
for (int i = 0; i < rowCount(); i++)
{
u32 addr = m_address - ((rowCount() / 2) * 4) + i * 4;
u32 color = PowerPC::debug_interface.GetColor(addr);
const u32 addr = m_address - ((rowCount() / 2) * 4) + i * 4;
const u32 color = PowerPC::debug_interface.GetColor(addr);
auto* bp_item = new QTableWidgetItem;
auto* addr_item = new QTableWidgetItem(QStringLiteral("%1").arg(addr, 8, 16, QLatin1Char('0')));