summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-07-04 05:42:04 +1000
committer Vas Crabb <vas@vastheman.com>2022-07-04 05:42:04 +1000
commite26797d69c62f33675c916f6388d55ca38501b9f (patch)
tree7b7165f264e977323e42ece75e8f44b3a9020196 /src/lib/util
parentb1002b8362581edd0f99be18d7e5bff8c25b67d1 (diff)
bus/nubus: Implemented enough for interlaced modes not to hang.
Implemented more CRTC registers, getting to the point where System 6.0.8 and System 7.0.1 will show video on NTSC and PAL displays with approximately correct interrupt timings. Also implemented 1:2:1 convolutions (this blurs the image vertically - in real life it reduces interlace flicker). Screen update in interlaced modes isn't right yet - it updates every line on every frame, and there's a vertical offset caused by the initial half-line.
Diffstat (limited to 'src/lib/util')
-rw-r--r--src/lib/util/endianness.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lib/util/endianness.h b/src/lib/util/endianness.h
index aa83421f1d7..b93c1ffe44f 100644
--- a/src/lib/util/endianness.h
+++ b/src/lib/util/endianness.h
@@ -56,6 +56,7 @@ public:
constexpr offset_endian_cast(In *ptr, std::ptrdiff_t offs) noexcept : m_ptr(reinterpret_cast<Out *>(ptr)), m_offs(offs) { }
constexpr Out &operator[](std::ptrdiff_t i) const noexcept { return m_ptr[(m_offs + i) ^ ((Endian != endianness::native) ? SWIZZLE : 0)]; }
+ constexpr Out &operator*() const noexcept { return m_ptr[m_offs ^ ((Endian != endianness::native) ? SWIZZLE : 0)]; }
constexpr offset_endian_cast operator+(std::ptrdiff_t i) const noexcept { return offset_endian_cast(*this) += i; }
constexpr offset_endian_cast operator-(std::ptrdiff_t i) const noexcept { return offset_endian_cast(*this) -= i; }