diff --git a/Processors/6502Mk2/6502Mk2.hpp b/Processors/6502Mk2/6502Mk2.hpp index 88af967b0..99a5aeee8 100644 --- a/Processors/6502Mk2/6502Mk2.hpp +++ b/Processors/6502Mk2/6502Mk2.hpp @@ -114,9 +114,9 @@ struct NoValue { class Writeable { public: uint8_t operator=(const uint8_t value) { - if constexpr (requires{did_write_;}) { - did_write_ = true; - } + #ifndef NDEBUG + did_write_ = true; + #endif return result_ = value; } operator uint8_t() const { @@ -126,17 +126,9 @@ public: private: uint8_t result_; - friend struct WriteableReader; -#ifndef NDEBUG + #ifndef NDEBUG bool did_write_ = false; -#endif -}; - -struct WriteableReader { - static void assign(uint8_t &lhs, const Writeable rhs) { - lhs = rhs; - } - static void assign(const uint8_t &, const Writeable) {} + #endif }; template struct Value; diff --git a/Processors/6502Mk2/Implementation/6502.hpp b/Processors/6502Mk2/Implementation/6502.hpp index 67e42cdc4..baf66e338 100644 --- a/Processors/6502Mk2/Implementation/6502.hpp +++ b/Processors/6502Mk2/Implementation/6502.hpp @@ -29,6 +29,13 @@ void Processor::run_for(const Cycles cycles) { Storage::cycles_ += cycles; if(Storage::cycles_ <= Cycles(0)) return; + struct WriteableReader { + static void assign(uint8_t &lhs, const Data::Writeable rhs) { + lhs = rhs; + } + static void assign(const uint8_t &, const Data::Writeable) {} + }; + #define restore_point() (__COUNTER__ + int(ResumePoint::Max) + int(AddressingMode::Max)) #define join(a, b) a##b @@ -62,7 +69,7 @@ void Processor::run_for(const Cycles cycles) { } else { \ Data::Writeable target; \ Storage::cycles_ -= Storage::bus_handler_.template perform(addr, target); \ - Data::WriteableReader::assign(value, target); \ + WriteableReader::assign(value, target); \ } \ } else { \ Storage::cycles_ -= Storage::bus_handler_.template perform(addr, value); \