diff --git a/LR35902/src/IoRegisters.cpp b/LR35902/src/IoRegisters.cpp index c63e8fd..83d3106 100644 --- a/LR35902/src/IoRegisters.cpp +++ b/LR35902/src/IoRegisters.cpp @@ -40,7 +40,7 @@ void EightBit::GameBoy::IoRegisters::Bus_ReadingByte(EightBit::EventArgs) { auto upOrSelect = (live && !m_p12) ? 0 : Chip::Bit2; auto downOrStart = (live && !m_p13) ? 0 : Chip::Bit3; auto lowNibble = rightOrA | leftOrB | upOrSelect | downOrStart; - auto highNibble = Chip::promoteNibble(Chip::Mask4); + constexpr auto highNibble = Chip::promoteNibble(Chip::Mask4); auto value = lowNibble | highNibble; poke(port, lowNibble | highNibble); } diff --git a/inc/BigEndianProcessor.h b/inc/BigEndianProcessor.h index 871a15c..05abf39 100644 --- a/inc/BigEndianProcessor.h +++ b/inc/BigEndianProcessor.h @@ -1,13 +1,14 @@ #pragma once -#include "Bus.h" -#include "Register.h" #include "Processor.h" namespace EightBit { + + class Bus; + class BigEndianProcessor : public Processor { public: - ~BigEndianProcessor() {}; + ~BigEndianProcessor() = default; register16_t peekWord(register16_t address) final; void pokeWord(register16_t address, register16_t value) final; diff --git a/inc/InputOutput.h b/inc/InputOutput.h index eb2954f..f238278 100644 --- a/inc/InputOutput.h +++ b/inc/InputOutput.h @@ -3,7 +3,6 @@ #include #include -#include "Signal.h" #include "Memory.h" #include "Ram.h" @@ -14,7 +13,7 @@ namespace EightBit { InputOutput() = default; - [[nodiscard]] size_t size() const override; + [[nodiscard]] size_t size() const noexcept override; [[nodiscard]] uint8_t peek(uint16_t address) const override; [[nodiscard]] uint8_t& reference(uint16_t address) override; diff --git a/inc/IntelProcessor.h b/inc/IntelProcessor.h index f25d243..4a71974 100644 --- a/inc/IntelProcessor.h +++ b/inc/IntelProcessor.h @@ -3,7 +3,6 @@ #include #include -#include "Bus.h" #include "LittleEndianProcessor.h" #include "Register.h" #include "EventArgs.h" @@ -11,6 +10,9 @@ #include "EightBitCompilerDefinitions.h" namespace EightBit { + + class Bus; + class IntelProcessor : public LittleEndianProcessor { public: struct opcode_decoded_t { diff --git a/inc/LittleEndianProcessor.h b/inc/LittleEndianProcessor.h index edbb46f..73d432f 100644 --- a/inc/LittleEndianProcessor.h +++ b/inc/LittleEndianProcessor.h @@ -1,10 +1,11 @@ #pragma once -#include "Bus.h" -#include "Register.h" #include "Processor.h" namespace EightBit { + + class Bus; + class LittleEndianProcessor : public Processor { public: ~LittleEndianProcessor() = default; diff --git a/inc/Processor.h b/inc/Processor.h index 7d2aa02..5026c52 100644 --- a/inc/Processor.h +++ b/inc/Processor.h @@ -5,8 +5,6 @@ #include "ClockedChip.h" #include "Bus.h" #include "Register.h" -#include "EventArgs.h" -#include "Signal.h" #include "EightBitCompilerDefinitions.h" @@ -15,9 +13,9 @@ namespace EightBit { public: // b: number of bits representing the number in x // x: sign extend this b-bit number to r - [[nodiscard]] static int8_t signExtend(int b, uint8_t x); + [[nodiscard]] static int8_t signExtend(int b, uint8_t x) noexcept; - ~Processor() {}; + ~Processor() = default; [[nodiscard]] auto& PC() noexcept { return m_pc; } diff --git a/inc/Ram.h b/inc/Ram.h index d407f8c..18e0830 100644 --- a/inc/Ram.h +++ b/inc/Ram.h @@ -1,7 +1,5 @@ #pragma once -#include - #include "Rom.h" namespace EightBit { diff --git a/inc/UnusedMemory.h b/inc/UnusedMemory.h index 0085126..c6f2bd7 100644 --- a/inc/UnusedMemory.h +++ b/inc/UnusedMemory.h @@ -14,7 +14,7 @@ namespace EightBit { class UnusedMemory final : public Memory { public: UnusedMemory(size_t size, uint8_t value); - ~UnusedMemory() {}; + ~UnusedMemory() = default; [[nodiscard]] size_t size() const final; [[nodiscard]] uint8_t peek(uint16_t address) const final; diff --git a/src/InputOutput.cpp b/src/InputOutput.cpp index 6ea37ef..75f71fc 100644 --- a/src/InputOutput.cpp +++ b/src/InputOutput.cpp @@ -5,7 +5,7 @@ #include "Register.h" -size_t EightBit::InputOutput::size() const { +size_t EightBit::InputOutput::size() const noexcept { return 0x100; } diff --git a/src/IntelProcessor.cpp b/src/IntelProcessor.cpp index 90f7af9..5a65976 100644 --- a/src/IntelProcessor.cpp +++ b/src/IntelProcessor.cpp @@ -4,7 +4,7 @@ EightBit::IntelProcessor::IntelProcessor(Bus& bus) : LittleEndianProcessor(bus) { for (int i = 0; i < 0x100; ++i) - m_decodedOpcodes[i] = i; + m_decodedOpcodes.at(i) = i; LoweredHALT.connect([this](EventArgs) { --PC(); }); RaisedHALT.connect([this](EventArgs) { ++PC(); }); diff --git a/src/Processor.cpp b/src/Processor.cpp index fcce6e9..cbfcd58 100644 --- a/src/Processor.cpp +++ b/src/Processor.cpp @@ -60,7 +60,7 @@ int EightBit::Processor::execute(const uint8_t value) { } // http://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend -int8_t EightBit::Processor::signExtend(const int b, uint8_t x) { +int8_t EightBit::Processor::signExtend(const int b, uint8_t x) noexcept { const uint8_t m = bit(b - 1); // mask can be pre-computed if b is fixed x = x & (bit(b) - 1); // (Skip this if bits in x above position b are already zero.) const auto result = (x ^ m) - m;