diff --git a/Machines/Amiga/Chipset.cpp b/Machines/Amiga/Chipset.cpp index 918eff116..7bd634f2d 100644 --- a/Machines/Amiga/Chipset.cpp +++ b/Machines/Amiga/Chipset.cpp @@ -1008,7 +1008,8 @@ bool Chipset::Sprite::advance(int y) { // and proceed to FetchData0. case DMAState::FetchData1: if(y == v_stop_) { - dma_state_ = DMAState::Stopped; + dma_state_ = DMAState::FetchStart; + active = false; return false; } set_image_data(1, ram_[pointer_[0]]); diff --git a/Machines/Amiga/Chipset.hpp b/Machines/Amiga/Chipset.hpp index f9afaf57c..a9f33a9dc 100644 --- a/Machines/Amiga/Chipset.hpp +++ b/Machines/Amiga/Chipset.hpp @@ -145,12 +145,13 @@ class Chipset: private ClockingHint::Observer { uint16_t v_start_ = 0, v_stop_ = 0; enum class DMAState { + Stopped, FetchStart, FetchStopAndControl, WaitingForStart, + FetchData1, FetchData0, - Stopped } dma_state_ = DMAState::FetchStart; } sprites_[8];