From a2edbedb520f2ada936c00308cc6dfd75717b0d8 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Mon, 13 Jan 2025 23:04:30 +0100 Subject: read cartridges --- src/nes/util/address.hh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/nes/util/address.hh (limited to 'src/nes/util/address.hh') diff --git a/src/nes/util/address.hh b/src/nes/util/address.hh new file mode 100644 index 0000000..f02b66b --- /dev/null +++ b/src/nes/util/address.hh @@ -0,0 +1,40 @@ +#pragma once + +#include + +namespace nes +{ + /// An address on the NES. + class address + { + std::uint16_t absolute_{ 0 }; + + public: + /// Create a zero address. + explicit address() = default; + + /// Create an address from its absolute value. + explicit address(std::uint16_t const absolute) + : absolute_{ absolute } + { + } + + /// Get the absolute address value. + auto get_absolute() const -> std::uint16_t + { + return absolute_; + } + + /// Get the address page (the first 8 bits). + auto get_page() const -> std::uint8_t + { + return static_cast((get_absolute() & 0xFF00) >> 8); + } + + /// Get the offset within the page (the last 8 bits). + auto get_offset() const -> std::uint8_t + { + return static_cast((get_absolute() & 0x00FF) >> 0); + } + }; +} // namespace nes \ No newline at end of file -- cgit v1.3.1