From c5e8b547af2ed9edebc3573995ca2829c9a80d82 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 22 Oct 2021 11:21:58 -0700 Subject: [PATCH] Captures the attach flag and observes activation rule. --- Machines/Amiga/Chipset.cpp | 3 +++ Machines/Amiga/Chipset.hpp | 1 + 2 files changed, 4 insertions(+) diff --git a/Machines/Amiga/Chipset.cpp b/Machines/Amiga/Chipset.cpp index 5d44d376c..5e3a7d8da 100644 --- a/Machines/Amiga/Chipset.cpp +++ b/Machines/Amiga/Chipset.cpp @@ -911,16 +911,19 @@ void Chipset::Bitplanes::set_control(uint16_t control) { void Chipset::Sprite::set_start_position(uint16_t value) { v_start_ = (v_start_ & 0xff00) | (value >> 8); h_start_ = (h_start_ & 0xff00) | ((value & 0xff)); + active_ = false; } void Chipset::Sprite::set_stop_and_control(uint16_t value) { h_start_ = uint16_t((h_start_ & 0x00ff) | ((value & 0x01) << 8)); v_stop_ = uint16_t((value >> 8) | ((value & 0x02) << 7)); v_start_ = uint16_t((v_start_ & 0x00ff) | ((value & 0x04) << 6)); + attached_ = value & 0x80; } void Chipset::Sprite::set_image_data(int slot, uint16_t value) { data_[slot] = value; + active_ |= slot == 0; } // MARK: - Disk. diff --git a/Machines/Amiga/Chipset.hpp b/Machines/Amiga/Chipset.hpp index e1c1a9b7f..8867235fd 100644 --- a/Machines/Amiga/Chipset.hpp +++ b/Machines/Amiga/Chipset.hpp @@ -137,6 +137,7 @@ class Chipset: private ClockingHint::Observer { private: uint16_t v_start_ = 0, h_start_ = 0, v_stop_ = 0; uint16_t data_[2]{}; + bool active_ = false, attached_ = false; } sprites_[8]; // MARK: - Raster position and state.