From d6bf2e1b567a62b7ab5254538aa4e82ad4b1ac93 Mon Sep 17 00:00:00 2001
From: Anonymus Raccoon
Date: Sun, 5 Apr 2020 17:08:37 +0200
Subject: [PATCH] Displaying ??? when we don't know what we read on the bus's
debugger
---
sources/Debugger/MemoryBusDebug.cpp | 10 ++++++----
sources/Debugger/MemoryBusDebug.hpp | 4 ++--
sources/PPU/PPU.cpp | 3 +--
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/sources/Debugger/MemoryBusDebug.cpp b/sources/Debugger/MemoryBusDebug.cpp
index e1548e5..f8997fe 100644
--- a/sources/Debugger/MemoryBusDebug.cpp
+++ b/sources/Debugger/MemoryBusDebug.cpp
@@ -161,17 +161,17 @@ namespace ComSquare::Debugger
void MemoryBusDebug::write(uint24_t addr, uint8_t data)
{
auto accessor = this->getAccessor(addr);
- uint8_t value;
+ std::optional value;
try {
value = accessor->read(addr - accessor->getStart());
} catch (InvalidAddress &) {
- value = 0;
+ value = std::nullopt;
}
this->_model.log(BusLog(true, addr, accessor, value, data));
MemoryBus::write(addr, data);
}
- BusLog::BusLog(bool _write, uint24_t _addr, std::shared_ptr &_accessor, uint8_t _oldData, uint8_t _newData) :
+ BusLog::BusLog(bool _write, uint24_t _addr, std::shared_ptr &_accessor, std::optional _oldData, uint8_t _newData) :
write(_write), addr(_addr), accessor(std::move(_accessor)), oldData(_oldData), newData(_newData)
{}
}
@@ -203,7 +203,9 @@ QVariant BusLogModel::data(const QModelIndex &index, int role) const
case 3:
return QString(log.accessor ? log.accessor->getValueName(log.addr - log.accessor->getStart()).c_str() : "Open bus");
case 4:
- return QString(ComSquare::Utility::to_hex(log.oldData).c_str());
+ if (!log.oldData)
+ return QString("???");
+ return QString(ComSquare::Utility::to_hex(*log.oldData).c_str());
case 5:
return QString(ComSquare::Utility::to_hex(log.newData).c_str());
default:
diff --git a/sources/Debugger/MemoryBusDebug.hpp b/sources/Debugger/MemoryBusDebug.hpp
index 6f7ff3b..9e6cbd8 100644
--- a/sources/Debugger/MemoryBusDebug.hpp
+++ b/sources/Debugger/MemoryBusDebug.hpp
@@ -15,12 +15,12 @@ namespace ComSquare::Debugger
{
//! @brief The struct used to represent memory bus logs.
struct BusLog {
- BusLog(bool write, uint24_t addr, std::shared_ptr &accessor, uint8_t oldData, uint8_t newData);
+ BusLog(bool write, uint24_t addr, std::shared_ptr &accessor, std::optional oldData, uint8_t newData);
bool write;
uint24_t addr;
std::shared_ptr accessor;
- uint8_t oldData;
+ std::optional oldData;
uint8_t newData;
};
diff --git a/sources/PPU/PPU.cpp b/sources/PPU/PPU.cpp
index 1813238..4b6748e 100644
--- a/sources/PPU/PPU.cpp
+++ b/sources/PPU/PPU.cpp
@@ -30,8 +30,7 @@ namespace ComSquare::PPU
case 0x36:
return this->_registers._mpy.mpyh;
default:
- //throw InvalidAddress("PPU Internal Registers read", addr);
- std::cout << "PPU Internal Registers read" << addr << std::endl;
+ throw InvalidAddress("PPU Internal Registers read", addr);
}
}