diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 22:02:11 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 22:02:11 +0100 |
| commit | b1d1573702f21e3104606d6ade5f5d39ec86a33a (patch) | |
| tree | d703be130a5d6f9ff2626313d3380ed34de44dd7 /src/nes/util/address.hh | |
| parent | 6512dd599d13035f6a90b2009344e02c488f5aae (diff) | |
restructure project
Diffstat (limited to 'src/nes/util/address.hh')
| -rw-r--r-- | src/nes/util/address.hh | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/src/nes/util/address.hh b/src/nes/util/address.hh deleted file mode 100644 index 7987d07..0000000 --- a/src/nes/util/address.hh +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include <cstdint> - -namespace nes -{ - /// An address on the NES. - class address - { - std::uint16_t absolute_{ 0 }; - - public: - /// Create a zero address. - constexpr explicit address() = default; - - /// Create an address from its absolute value. - constexpr explicit address(std::uint16_t const absolute) - : absolute_{ absolute } - { - } - - /// Create an address from its page and offset combination. - constexpr explicit address(std::uint8_t const page, std::uint8_t const offset) - : address{ static_cast<std::uint16_t>((page << 8) | (offset << 0)) } - { - } - - /// Get the absolute address value. - constexpr auto get_absolute() const -> std::uint16_t - { - return absolute_; - } - - /// Get the address page (the first 8 bits). - constexpr auto get_page() const -> std::uint8_t - { - return static_cast<std::uint8_t>((get_absolute() & 0xFF00) >> 8); - } - - /// Get the offset within the page (the last 8 bits). - constexpr auto get_offset() const -> std::uint8_t - { - return static_cast<std::uint8_t>((get_absolute() & 0x00FF) >> 0); - } - }; - - constexpr auto operator==(address const a, address const b) -> bool { return a.get_absolute() == b.get_absolute(); } - constexpr auto operator!=(address const a, address const b) -> bool { return a.get_absolute() != b.get_absolute(); } - constexpr auto operator<(address const a, address const b) -> bool { return a.get_absolute() < b.get_absolute(); } - constexpr auto operator>(address const a, address const b) -> bool { return a.get_absolute() > b.get_absolute(); } - constexpr auto operator<=(address const a, address const b) -> bool { return a.get_absolute() <= b.get_absolute(); } - constexpr auto operator>=(address const a, address const b) -> bool { return a.get_absolute() >= b.get_absolute(); } - - constexpr auto operator+(address const a, std::uint16_t const b) -> address - { - return address{ static_cast<std::uint16_t>(a.get_absolute() + b) }; - } - - constexpr auto operator+(std::uint16_t const a, address const b) -> address - { - return address{ static_cast<std::uint16_t>(a + b.get_absolute()) }; - } - - constexpr auto operator-(address const a, std::uint16_t const b) -> address - { - return address{ static_cast<std::uint16_t>(a.get_absolute() - b) }; - } - - constexpr auto operator%(address const a, std::uint16_t const b) -> address - { - return address{ static_cast<std::uint16_t>(a.get_absolute() % b) }; - } -} // namespace nes
\ No newline at end of file |
