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); } }